Введение в стандарты языка баз данных SQL

Определение столбца


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

<column definition> ::= <column name> <data type> [<default clause>] [<column constraint>...] <default clause> ::= DEFAULT { <literal> USER NULL } <column constraint> ::= NOT NULL [<unique specification>] |<references specification> |CHECK (<search condition>)

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

В разделе значения по умолчанию указывается значение, которое должно быть помещено в строку, заносимую в данную таблицу, если значение данного столбца явно не указано. Значение по умолчанию может быть указано в виде литеральной константы с типом, соответствующим типу столбца; путем задания ключевого слова USER, которому при выполнении оператора занесения строки соответствует символьная строка, содержащая имя текущего пользователя (в этом случае столбец должен иметь тип символьных строк); или путем задания ключевого слова NULL, означающего, что значением по умолчанию является неопределенное значение. Если значение столбца по умолчанию не специфицировано, и в разделе ограничений целостности столбца указано NOTNULL, то попытка занести в таблицу строку с неспецифицированным значением данного столбца приведет к ошибке.

Указание в разделе ограничений целостности NOTNULL приводит к неявному порождению проверочного ограничения целостности для всей таблицы (см. следующий подраздел) "CHECK (CISNOTNULL)" (где C - имя данного столбца). Если ограничение NOTNULL не указано, и раздел умолчаний отсутствует, то неявно порождается раздел умолчаний DEFAULTNULL. Если указана спецификация уникальности, то порождается соответствующая спецификация уникальности для таблицы.

Если в разделе ограничений целостности указано ограничение по ссылкам данного столбца (<referencespecification>), то порождается соответствующее определение ограничения по ссылкам для таблицы:

FOREIGNKEY(C) <referencespecification>.

Наконец, если указано проверочное ограничение столбца, то условие поиска этого ограничения должно ссылаться только на данный столбец, и неявно порождается соответствующее проверочное ограничение для всей таблицы.



Содержание раздела