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

我们先来搞一个测试, 将其中的一个列设为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和其他的约束吧.

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值