如何消灭掉Default默认值?
表结构
CREATE TABLE INVESTMENT(
IUSERID NUMBER(10) NOT NULL , /* 用户标识 */
FTOTAL NUMBER(10,2) NOT NULL , /* 总额 */
DENDVALIDDATE DATE DEFAULT SYSDATE, /* 截止有效期 */
FUSABLE NUMBER(10,2), /* 余额 */
CONSTRAINT SYS_C0010414 PRIMARY KEY (IUSERID)
);
现在我想要把表变成这样(在不能够重建表的情况下),把“DEFAULT SYSDATE”消灭掉:
CREATE TABLE INVESTMENT(
IUSERID NUMBER(10) NOT NULL , /* 用户标识 */
FTOTAL NUMBER(10,2) NOT NULL , /* 总额 */
DENDVALIDDATE DATE, /* 截止有效期 */
FUSABLE NUMBER(10,2), /* 余额 */
CONSTRAINT SYS_C0010414 PRIMARY KEY (IUSERID)
);
而并不是变成
DENDVALIDDATE DATE DEFAULT NULL, /* 截止有效期 */
怎么样才能做的到?
问题点数:60、回复次数:6Top
1 楼waterfirer(水清)回复于 2005-08-22 16:03:02 得分 10
alter table INVESTMENT
modify DENDVALIDDATE DATE DEFAULT NULLTop
2 楼Samland(samland)回复于 2005-08-22 16:27:58 得分 0
那岂不是就变成了这样吗?
DENDVALIDDATE DATE DEFAULT NULL, /* 截止有效期 */
这不是我想得到的,
怎么样才能做的到完全消灭它?
Top
3 楼njhart2003()回复于 2005-08-22 16:30:51 得分 0
楼上正解!Top
4 楼njhart2003()回复于 2005-08-22 16:32:19 得分 10
不设置default 与default NULL 是一样的
或者说default NULL就是默认值。Top
5 楼bzszp(SongZip)回复于 2005-08-22 17:09:06 得分 40
SQL> desc t;
名称 空? 类型
----------------------------------------- -------- --------------
AAA VARCHAR2(10)
BBB NUMBER
SQL> select defaultval from col where tname ='T';
DEFAULTVAL
------------------------------------------------------------------
Null
已用时间: 00: 00: 00.20
SQL> alter table t modify aaa default NULL;
表已更改。
已用时间: 00: 00: 00.60
SQL> select defaultval from col where tname ='T';
DEFAULTVAL
------------------------------------------------------------------
NULL
已用时间: 00: 00: 00.30
SQL> alter table t modify aaa default '';
表已更改。
已用时间: 00: 00: 00.40
SQL> select defaultval from col where tname ='T';
DEFAULTVAL
------------------------------------------------------------------
''
已用时间: 00: 00: 00.40
SQL>
数据字典中的确实没法恢复了,没找到办法。
:(Top
6 楼bzszp(SongZip)回复于 2005-08-22 17:18:27 得分 0
不过用null没有什么问题。
SQL> alter table t modify aaa number default 100;
表已更改。
已用时间: 00: 00: 00.30
SQL> select defaultval from col where tname ='T';
DEFAULTVAL
--------------------------------------------------------------
100
已用时间: 00: 00: 00.30
SQL> alter table t modify aaa date;
alter table t modify aaa date
*
ERROR 位于第 1 行:
ORA-02262: ORA-%05d 出现,此时正在进行默认值表达式的类型检查
已用时间: 00: 00: 00.50
SQL> alter table t modify aaa number default null;
表已更改。
已用时间: 00: 00: 00.41
SQL> select defaultval from col where tname ='T';
DEFAULTVAL
--------------------------------------------------------------
null
已用时间: 00: 00: 00.20
SQL> alter table t modify aaa date;
表已更改。
已用时间: 00: 00: 00.90
SQL> select defaultval from col where tname ='T';
DEFAULTVAL
--------------------------------------------------------------
null
已用时间: 00: 00: 00.40
SQL>Top




