当前位置: 首页 > Oracle, Oracle 12c > 正文

Oracle 12C新特性-插入数据时指定NULL值时使用默认值(DEFAULT ON NULL)

Oracle 12支持在向有默认值的字段中插入数据时,如果指定NULL或’’时使用默认值,这个新特性被称为DEFAUT ON NULL。在12C版本之前,是没有这个功能的,12C版本之前,对于这样的列,插入时指定NULL,就不会使用默认值,当然12C也是兼容的,也可以插入NULL时不是有默认值。

下面进行测试,首先创建测试表。

SQL> create table t_test01(id number,n_name varchar2(20),n_code number default 10,n_num number default on null 20);

Table created.

上面建的表,N_CODE字段是传统的使用默认值的字段,和12C之前版本一样,插入时使用NULL不会使用默认值,N_NUM字段就是本文要测试的12C的新特性,插入数据时明确指定NULL时,使用默认值。

下面向测试表中插入一条数据,N_CODE和N_NUM字段都使用NULL值。

SQL> insert into t_test01 values (1,'a',null,null);

1 row created.
SQL> select * from t_test01;

        ID N_NAME                   N_CODE      N_NUM
---------- -------------------- ---------- ----------
         1 a                                       20

可以看到,传统的有默认值的字段,在插入数据时,如果使用NULL值,不会使用默认值,而DEFAULT ON NULL的字段,就会使用默认值。

下面在插入一条N_CODE和N_NUM字段都使用’’的数据。

SQL> insert into t_test01 values (2,'b','','');

1 row created.
SQL> select * from t_test01;

        ID N_NAME                   N_CODE      N_NUM
---------- -------------------- ---------- ----------
         1 a                                       20
         2 b                                       20

可以通过实验结果看到,同样传统的默认值字段也没有使用默认值,而DEFAULT ON NULL的字段使用了默认值。

下面在插入一条这两个字段都用DEFAULT值的数据。

SQL> insert into t_test01 values (3,'c',default,default);

1 row created.
SQL> select * from t_test01;

        ID N_NAME                   N_CODE      N_NUM
---------- -------------------- ---------- ----------
         1 a                                       20
         2 b                                       20
         3 c                            10         20

因为插入是指定了DEFAULT值,两种默认值字段都使用了默认值。

下面在插入一条插入时不指定这两个字段的数据,这种情况肯定也会使用默认值。

SQL> insert into t_test01(id,n_name) values(4,'d');

1 row created.
SQL> select * from t_test01;

        ID N_NAME                   N_CODE      N_NUM
---------- -------------------- ---------- ----------
         1 a                                       20
         2 b                                       20
         3 c                            10         20
         4 d                            10         20

这个新功能还是很有用的,可能因为此功能,当业务系统更新活增加需求的时候,就不需要修改程序SQL了。

本文固定链接: http://www.dbdream.com.cn/2018/04/27/oracle-12c%e6%96%b0%e7%89%b9%e6%80%a7-%e6%8f%92%e5%85%a5%e6%95%b0%e6%8d%ae%e6%97%b6%e6%8c%87%e5%ae%9anull%e5%80%bc%e6%97%b6%e4%bd%bf%e7%94%a8%e9%bb%98%e8%ae%a4%e5%80%bcdefault-on-null/ | 信春哥,系统稳,闭眼上线不回滚!

该日志由 dbdream 于2018年04月27日发表在 Oracle, Oracle 12c 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: Oracle 12C新特性-插入数据时指定NULL值时使用默认值(DEFAULT ON NULL) | 信春哥,系统稳,闭眼上线不回滚!
关键字: , , ,

Oracle 12C新特性-插入数据时指定NULL值时使用默认值(DEFAULT ON NULL):等您坐沙发呢!

发表评论

您必须 [ 登录 ] 才能发表留言!