Определение значения по умолчанию столбцов таблицы
Спецификация
См. спецификацию пункта «Создание таблицы».
Синтаксические правила
-
Суммарный размер
< значений по умолчанию >
столбцов таблицы, задаваемых с помощью конструкций< задаваемое значение >
,< вычисляемое значимое >
не должен превышать 4000 символов. -
Если для столбца задано
< задаваемое значение >
, то оно автоматически приводится к конструкции 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));
-
Разрешено использование функции TO_DATE с константными аргументами в качестве
< значения по умолчанию >
для столбца типа DATE.create table tab1 (d1 date default to_date('01.01.2003'),'dd.mm.yyyy'));
-
Запрещено одновременное задание для столбца опций DEFAULT и PRIMARY KEY.
-
Значение DEFAULT NULL устанавливается лишь в том случае, если оно не конфликтует ни с какими ранее установленными атрибутами столбца.
-
Значение DEFAULT NULL допускается для столбца с атрибутом NOT NULL, но не устанавливает NULL-значение по умолчанию. Т.е. попытка выполнить ALTER TABLE DROP DEFAULT для такого столбца будет неудачной, т.к. NULL-значение является стандартным значением (а не значением по умолчанию) для тех полей таблицы, которым не присвоено реальное значение при выполнении операции INSERT.
Общие правила
-
Конструкция
< значение по умолчанию >
задает значение, которое будет присваиваться столбцу при добавлении записи, в которой значение данного столбца не указано. Тип данных< значения по умолчанию >
должен соответствовать типу данных столбца или приводиться к нему.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'ъъъ');
-
Для BLOB и EXTFILE типов данных
< значение по умолчанию >
не поддерживается. -
При отсутствии явного значения столбца или
< значения по умолчанию >
столбцу присваивается 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|
-
< Литерал >
в< значении по умолчанию >
может иметь максимальное отрицательное значение для соответствующего целочисленного типа данных, уменьшенное на 1.create or replace table test (i smallint autoinc default –32767); create or replace table test (i int autoinc default –2147483647);
-
Максимальное отрицательное значение
< литерала >
в конструкции AUTOINC INITIAL на единицу меньше максимального отрицательного значения для соответствующего целочисленного типа данных.create or replace table tst (i smallint autoinc initial ( 32767)); create or replace table tst (i smallint autoinc initial (–32768)); /* ошибка */
-
< Значимое выражение >
может содержать ссылки на столбцы добавляемой записи.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|