Here's a simple demo of how a column's DEFAULT definiton behaves.
So, for row 2, if a value is specified for the column, it overrides the default.
For row 3, when a value is NOT specified, the default applies.
The "modify (data_col default NULL)" allows me to "reset" the DEFAULT definition to allow NULLs. That is how row 4 inserts a NULL.
Question : What if the column has a DEFAULT "YES" and I run :
.
.
.
SQL> create table test_default (id_col number, data_col varchar2(5));
Table created.
SQL> insert into test_default values (1,NULL);
1 row created.
SQL> alter table test_default modify (data_col default 'YES');
Table altered.
SQL> insert into test_default select 2,'TWO' from dual;
1 row created.
SQL> select * from test_default order by 1;
    ID_COL DATA_
---------- -----
         1
         2 TWO
SQL> insert into test_default (id_col) select 3 from dual;
1 row created.
SQL> select * from test_default order by 1;
    ID_COL DATA_
---------- -----
         1
         2 TWO
         3 YES
SQL> alter table test_default modify (data_col default NULL);
Table altered.
SQL> insert into test_default (id_col) select 4 from dual;
1 row created.
SQL> select * from test_default order by 1;
    ID_COL DATA_
---------- -----
         1
         2 TWO
         3 YES
         4
SQL> 
So, for row 2, if a value is specified for the column, it overrides the default.
For row 3, when a value is NOT specified, the default applies.
The "modify (data_col default NULL)" allows me to "reset" the DEFAULT definition to allow NULLs. That is how row 4 inserts a NULL.
Question : What if the column has a DEFAULT "YES" and I run :
insert into test_default select 2, NULL from dual;Will the DEFAULT override the NULL ?
.
.
.
No comments:
Post a Comment