Стандарт SQL не предусматривает ограничения целостности реализованные триггерами и хранимыми процедурами. SQL позволяет задавать декларативные ограничения целостности двумя способами:
1) Как ограничения доменов.
2) Как ограничения входящие в определения таблиц.
3) Как ограничения хранящиеся в БД в виде не зависимых функций.
Действия исполняемые по ссылке. Определяется 4 типа действий по стандарту SQL. Действия определяют, что будет происходить при изменении значений родительского ключа, на который ссылается внешний ключ. Эти действия можно задавать независимо для операций обновления (on update) и для операций удаления (on delete).
Действия:
1. Cascade – изменение значения родительского ключа автоматически приводит к изменению внешнего ключа. Удаление кортежа в родительском отношении приводит к удалению связанных с ним кортежей в дочерних отношениях.
2. Set Null – все внешние ключи, ссылавшиеся на обновленный или удаленный родительский ключ получают значение Null.
3. Set Default - все внешние ключи, ссылавшиеся на обновленный или удаленный родительский ключ получают значение по умолчанию.
4. No Action – значение внешнего ключа не изменяется. Если операция приводит к нарушению ссылочной целостности, то такая операция не выполняется.
Ограничения в операторах SQL:
1) Check – предикат ограничения считается нарушенным, если приобретает значение false.
2) Primary Key – уникальное, не пустое значение.
3) Unique – уникальное, может быть пустое значение.
4) Foreign Key, References – внешний ключ. Ограничение внешнего ключа нарушается если значение во внешнем ключе не совпадает со значением в родительской таблице. Операции приводящие к нарушению внешнего ключа отвергаются.
5) Not Null – не нулевое значение поля.
Ссылочное ограничение
On update, on delete.
Math All – полное совпадение внешнего и первичного ключей.
Match Partial – частичное совпадение значений внешнего и первичного ключей.