Определение значения по умолчанию столбцов таблицы
Спецификация

См. спецификацию пункта «Создание таблицы».

Синтаксические правила
  1. Суммарный размер <значений по умолчанию> столбцов таблицы, задаваемых с помощью конструкций <задаваемое значение>, <вычисляемое значимое> не должен превышать 4000 символов.

  2. Если для столбца задано <задаваемое значение>, то оно автоматически приводится к конструкции GENERATED BY DEFAULT AS.

    Эти конструкции эквивалентны:

    create or replace table q1(j int default 1, i int default (j+5));
    create or replace table q1(j int default 1, i int generated by default as (j+5));
  3. Разрешено использование функции TO_DATE с константными аргументами в качестве <значения по умолчанию> для столбца типа DATE.

    create table tab1 (d1 date default to_date('01.01.2003'),'dd.mm.yyyy'));
  4. Запрещено одновременное задание для столбца опций DEFAULT и PRIMARY KEY.

  5. Значение DEFAULT NULL устанавливается лишь в том случае, если оно не конфликтует ни с какими ранее установленными атрибутами столбца.

  6. Значение DEFAULT NULL допускается для столбца с атрибутом NOT NULL, но не устанавливает NULL-значение по умолчанию. Т.е. попытка выполнить ALTER TABLE DROP DEFAULT для такого столбца будет неудачной, т.к. NULL-значение является стандартным значением (а не значением по умолчанию) для тех полей таблицы, которым не присвоено реальное значение при выполнении операции INSERT.

Общие правила
  1. Конструкция <значение по умолчанию> задает значение, которое будет присваиваться столбцу при добавлении записи, в которой значение данного столбца не указано. Тип данных <значения по умолчанию> должен соответствовать типу данных столбца или приводиться к нему.

    create or replace table test
    (col1 char(10) character set CP866 default 'Воронеж',
    col2 byte(5) default 0xFF00,
    col3 boolean default 'true',
    col4 real default (+00002.E-5),
    col5 numeric default -28.755,
    col6 date default ('07.11.1917'),
    col7 nchar(12) default n'ъъъ');
  2. Для BLOB и EXTFILE типов данных <значение по умолчанию> не поддерживается.

  3. При отсутствии явного значения столбца или <значения по умолчанию> столбцу присваивается NULL-значение (если оно допустимо) за исключением BLOB-столбца, которому присваивается нулевая длина BLOB-данных.

    create or replace table test (col1 char(5), col2 byte(10),
    col3 boolean,col4 extfile, col5 real, col6 numeric, col7 date,
    col8 nchar, col9 blob, col10 extfile);
    insert into test;
    select * from test;
    |NULL| NULL| … |Тип:0, Размер:0|NULL|
  4. <Литерал> в <значении по умолчанию> может иметь максимальное отрицательное значение для соответствующего целочисленного типа данных, уменьшенное на 1.

    create or replace table test (i smallint autoinc default –32767);
    create or replace table test (i int autoinc default –2147483647);
  5. Максимальное отрицательное значение <литерала> в конструкции AUTOINC INITIAL на единицу меньше максимального отрицательного значения для соответствующего целочисленного типа данных.

    create or replace table tst
     (i smallint autoinc initial ( 32767));
    
    create or replace table tst
    (i smallint autoinc initial (–32768)); /* ошибка */
  6. <Значимое выражение> может содержать ссылки на столбцы добавляемой записи.

    create or replace table test
    (col1 int,
    col2 int default (col1+5),
    col3 date default (sysdate),
    col4 int default (abs(-45)+sqrt(16)),
    col5 char(10),
    col6 char(10) default (to_char(length(col5))),
    col7 char(10) default '12345',
    col8 char(10) default (to_char(length(col7))));
    
    insert into test(col1,col5) values (200, '12345');
    select * from test;
    |200|205| 16.11.2017:14:05:25| 49| 12345|5|