4.5.    Ограничения на множество допустимых значений данных

До сих пор рассматривалось только следующее ограниче­ние — значения, вводимые в таблицу, должны иметь типы дан­ных и размеры, совместимые с типами/размером данных столб­цов, в которые эта значения вводятся (как определено в команде CREATE TABLE или ALTER TABLE). Описание таблицы может быть дополнено более сложными ограничениями, накладываемыми на значения, которые могут быть вставлены в столбец или груп­пу столбцов. Ограничения (CONSTRAINTS) являются частью оп­ределения таблицы.

При создании (изменении) таблицы могут быть определены ограничения на вводимые значения. В этом случае SQL будет отвергать любое из них при несоответствии заданным критериям. Ограничения могут быть статическими, ограничивающими зна­чения или диапазон значений, вставляемых в столбец (CHECK, NOT NULL). Они могут иметь связь со всеми значениями столб­ца, ограничивая новые строки значениями, которые не содер­жатся в столбцах или их наборах (уникальные значения, пер­вичные ключи). Ограничения могут также определяться связью со значениями, находящимися в другой таблице, допуская, на­пример, вставку в столбец только тех значений, которые в дан­ным момент содержатся также в другом столбце другой или этой ,же таблицы (внешний ключ). Эти ограничения носят динами­ческий характер.

Существует два основных типа ограничений — ограничения на столбцы и ограничения на таблицу. Ограничения на столбцы (COLUMN CONSTRAINTS) применимы только к отдельным столб­цам, а ограничения натаблицу (TABLE CONSTRAINTS) примени­мы к группам, состоящим из одного или более столбцов. Огра­ничения на столбец добавляются в конце определения столбца после указания типа данных и перед окончанием описания столбца (запятой). Ограничения на таблицу размещаются в кон­це определения таблицы, после определения последнего столбца. Команда CREATE TABLE имеет следующий синтаксис, расши­ренный включением ограничений:

CREATE TABLE <ИМЯ таблицы >

(<имя столбца > <тип данных> Ограничения на столбец>, <имя столбца> <тип данных> Ограничения на столбец>, Ограничения на таблицу> (<имя столбца>[,<имя столбиа>]));

Поля, заданные в круглых скобках после описания ограни­чений таблицы, — это поля, на которые эти ограничения рас­пространяются. Ограничения на столбцы применяются к тем столбцам, в которых они описаны.