建表时的default选项,字符串、数值、SQL函数、表达式均为合法的选项。
一:各种合法选项的测试
SCOTT@ORA11GR2>create table t_def
(sdate date,
country varchar2(20) default 'China',
itime date default sysdate,
yestd date default trunc(sysdate-1));
Table created.
SCOTT@ORA11GR2>
SCOTT@ORA11GR2>insert into t_def(sdate) values(sysdate);
1 row created.
SCOTT@ORA11GR2>commit;
Commit complete.
SCOTT@ORA11GR2>select * from t_def;
SDATE COUNTRY ITIME YESTD
------------------- ----------- ------------------- -------------------
2012-09-09 22:37:50 China 2012-09-09 22:37:50 2012-09-08 00:00:00
SCOTT@ORA11GR2>
SCOTT@ORA11GR2>select table_name,column_name,data_type,data_default from user_tab_columns where table_name='T_DEF';
TABLE_NAME COLUMN_NAME DATA_TYPE DATA_DEFAULT
---------- ------------ ---------- --------------------
T_DEF SDATE DATE
T_DEF COUNTRY VARCHAR2 'China'
T_DEF ITIME DATE sysdate
T_DEF YESTD DATE trunc(sysdate-1)
SCOTT@ORA11GR2>
二:插入null值的测试
SCOTT@ORA11GR2>insert into t_def(sdate,country) values(sysdate,null);
1 row created.
SCOTT@ORA11GR2>commit;
Commit complete.
SCOTT@ORA11GR2>select * from t_def;
SDATE COUNTRY ITIME YESTD
------------------- ----------- ------------------- -------------------
2012-09-09 22:37:50 China 2012-09-09 22:37:50 2012-09-08 00:00:00
2012-09-09 22:40:05 2012-09-09 22:40:05 2012-09-08 00:00:00
SCOTT@ORA11GR2>
三:更新country字段为null的值为默认值
SCOTT@ORA11GR2>update t_def set country=default where country is null;
1 row updated.
SCOTT@ORA11GR2>commit;
Commit complete.
SCOTT@ORA11GR2>select * from t_def;
SDATE COUNTRY ITIME YESTD
------------------- ----------- ------------------- -------------------
2012-09-09 22:37:50 China 2012-09-09 22:37:50 2012-09-08 00:00:00
2012-09-09 22:40:05 China 2012-09-09 22:40:05 2012-09-08 00:00:00
SCOTT@ORA11GR2>
小结:
1)表达式指的是算数表达式,非逻辑表达式;
2)当有default选项的时候,在插入时,没有指定有default字段,那么此字段会使用默认值;
3)当明确地往有default选项中插入null值的时候,那么默认值是无效的,字段会显示插入的null值;
4)在insert、update的时候,可以直接使用default;
5)default选项中,列名和伪列是非法的;
6)默认值必须满足字段的数据类型。
表达式是合法选项,乍一听有点儿懵,给我第一感觉就是逻辑表达式,这怎么可能放在default选项中呢,可是稍微冷静一下会发现,其实表达式不单单有逻辑表达式,还有算数表达式,所以,表达式是合法选项是没有任何问题的。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/685769/viewspace-742982/
,如需转载,请注明出处,否则将追究法律责任。