oracle 修改默认值(转载)

将一个列的默认值修改为null之后,和没改之前数据字典的差别


--0 创建测试表,对默认值没有进行任何指定
SQL> create table T_DEFAULT_TEST (id number);

表已创建。

--1 查看数据字典,DATA_DEFAULT没有值
SQL> select A.COLUMN_NAME,A.DATA_DEFAULT
  2  from user_tab_columns a where a.TABLE_NAME = 'T_DEFAULT_TEST';

COLUMN_NAME                    DATA_DEFAULT
------------------------------ ----------------------------------------
ID
--2  修改默认值为1
SQL> alter table T_DEFAULT_TEST modify (id default 1);

表已更改。
--查看数据字典,DATA_DEFAULT为1,正常
SQL> select A.COLUMN_NAME,A.DATA_DEFAULT
  2  from user_tab_columns a where a.TABLE_NAME = 'T_DEFAULT_TEST';

COLUMN_NAME                    DATA_DEFAULT
------------------------------ ----------------------------------------
ID                             1
--3 修改默认值为null,也就是取消默认值的设定,
SQL> alter table T_DEFAULT_TEST modify (id default null);

表已更改。
--结果和预期不一样,预期DATA_DEFAULT不显示任何东西,结果显示null
SQL> select A.COLUMN_NAME,A.DATA_DEFAULT
  2  from user_tab_columns a where a.TABLE_NAME = 'T_DEFAULT_TEST';

COLUMN_NAME                    DATA_DEFAULT
------------------------------ ----------------------------------------
ID                             null

从现在开始数据字典种DATA_DEFAULT就像牛皮糖一样,怎么也去不掉,无论如何都无法回复到初始状态
COLUMN_NAME                    DATA_DEFAULT

猜你喜欢

转载自zzmt2012.iteye.com/blog/1631803