Определение ограничений на таблицу

  • Часть 1
  • | 2
  • | 3
  • | 4

При    определении    ограничений,    накладываемых    на    всю    таблицу, используется следующая синтаксическая конструкция: <тип_ограничения>::= [CONSTRAINT имя_ограничения] {{ PRIMARY KEY | UNIQUE} (<список_столбцов>) | FOREIGN KEY(<список_столбцов>)

REFERENCES родительская_таблица [(столбец1 [, столбец2 …])] [ON DELETE {NO ACTION | CASCADE| SET DEFAULT | SET NULL}] [ON UPDATE {NO ACTION | CASCADE| SET DEFAULT | SET NULL}] | CHECK(<условие_проверки>) } [USING [ASC[ENDING] | DESC[ENDING]] INDEXимя_индекса].

Существует три вида ограничений базовой таблицы:

-   ограничение первичного ключа;

-       ссылочное ограничение (ограничение внешнего ключа);

-       ограничение "проверочного условия".

При задании ограничения таблицы можно определить первичный ключ (как простой, так и составной). Если первичный ключ не является составным, то его можно определить при задании ограничения столбца (что было рассмотрено выше), но составной первичный ключ можно определить только с помощью ограничения таблицы. Для этого поля таблицы, являющиеся составным первичным ключом, перечисляются в скобках через запятую в предложении PRIMARY KEY.

Аналогично при задании ограничения таблицы можно определить как простой, так и составной внешний ключ, причем если простой ключ уже был определен в ограничении столбца, то определять его снова не требуется. Составной внешний ключ можно определить только с помощью ограничения таблицы, и для этого используется предложение FOREIGN KEY со списком столбцов и предложением REFERENCES c именами содержащих их таблиц, на которые ссылается данный внешний ключ.

Использование параметров NO ACTION, CASCADE, SET DEFAULT и SET NULL в предложениях ON DELETE и ON UPDATE аналогично использованию их при определении ограничения столбца (было рассмотрено выше).

предыдущаяследующая