Home  >  Article  >  Database  >  【转】dcba的文章:Oracle的SET UNUSED COLUMN操作到底做了什么?

【转】dcba的文章:Oracle的SET UNUSED COLUMN操作到底做了什么?

WBOY
WBOYOriginal
2016-06-07 15:33:141384browse

我们先来搞一个测试, 将其中的一个列设为UNUSED: SQL DESC T_FID Name Null? Type - COL1 NUMBER COL2 NUMBER COL3 NUMBER SQL ALTER TABLE T_FID SET UNUSED (COL3); Table altered. SQL alter system checkpoint; System altered. 然后我们去查COL$表中的

    我们先来搞一个测试, 将其中的一个列设为UNUSED:

SQL> DESC T_FID
Name                    Null?    Type
———————– ——– ——-
COL1                            NUMBER
COL2                            NUMBER
COL3                            NUMBER
SQL> ALTER TABLE T_FID SET UNUSED (COL3);
Table altered.
SQL> alter system checkpoint;
System altered.

    然后我们去查COL$表中的三列(COL#,SEGCOL#,NAME), 看看值是什么?
在这儿为了方便, 我就用AUL/MyDUL 的DESC命令去看了

AUL> desc alex.t_fid
Storage(OBJ#=7641 OBJD=7641 TS=2 FILE=3 BLOCK=1529 CLUSTER=0)
No. SEQ Column Name                  Type
— — —————————– —————-
  1  1 COL1                          NUMBER
  2  2 COL2                          NUMBER
  0  3 SYS_C00004_05092817:31:11$    NUMBER

AUL> UNLOAD TABLE alex.t_fid;
2005-09-28 17:32:40
Unload OBJD=7641 FILE=3 BLOCK=1529 CLUSTER=0 …
9,8,7
2005-09-28 17:32:40

    从这儿可以看到, SET UNUSED时将一个列的名字换一下, 此外还将这个列的显示顺序的值设为0, 原来为3.
虽然Oracle不提供反向操作,但实际上原来的数据还存在, 不提供的原因可能是因为不能保证not null和其他的约束吧.

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn