При определении ограничений, накладываемых на всю таблицу, используется следующая синтаксическая конструкция: <тип_ограничения>::= [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 аналогично использованию их при определении ограничения столбца (было рассмотрено выше).
предыдущаяследующая