このon nullは、insert文で挿入しようとしている値がnullの場合に、指定した値を挿入してくれます。
※defaultの場合は、insertで指定されていない場合のみ値を挿入してくれるけど、on nullを使用することで完全にnullを除外出来るようになる。
なお、on nullを指定するとnullが入ることがありえないので、not nullを指定しなくても暗黙的にnot nullになる。
例
create table文
以下のように、defaultの後にon null句を記述し、null時に代入する値を指定する。create table on_null_test ( id number not null, char_col char(1) default on null '0', -- nullの場合は、「0」を代入する number_col number default on null 100, -- nullの場合は、「100」を代入する primary key (id) );
insert文を実行
-- 主キー以外は指定しない INSERT INTO ON_NULL_TEST (id) values (1); -- nullを代入 INSERT INTO ON_NULL_TEST (id, char_col, number_col) values (2, null, null); -- null以外を代入 INSERT INTO ON_NULL_TEST (id, char_col, number_col) values (3, '1', 999);
実行結果
IDが1と2の行は、insertで項目を指定していない、nullを指定しているためデフォルトの値が挿入されている。ID CHAR_COL NUMBER_COL 1 0 100 2 0 100 3 1 999