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


Определение ограничений целостности - часть 2


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

<referential constraint definition> ::= FOREIGN KEY <left paren> <referencing columns> <right paren> <references specification> <references specification> ::= REFERENCES <referenced table and columns> [ MATCH <match type> ] [ <referential triggered action> ] <match type> ::= FULL PARTIAL <referencing columns> ::= <reference column list> <referenced table and columns> ::= <table name> [ <left paren> <reference column list> <right paren> ] <reference column list> ::= <column name list> <referential triggered action> ::= <update rule> [ <delete rule> ] |<delete rule> [ <update rule> ] <update rule> ::= ON UPDATE <referential action> <delete rule> ::= ON DELETE <referential action> <referential action> ::= CASCADE |SET NULL |SET DEFAULT |NO ACTION

Пояснения:

  1. Ссылающейся таблицей мы будем называть таблицу, фигурирующую в определении таблицы или изменении схемы таблицы (операторе ALTERTABLE). Таблицей, на которую указывает ссылка, будем называть таблицу, имя которой указывается в разделе referencedtableandcolumns. Ссылающимися столбцами будем называть столбцы, перечисленные в списке столбцов-ссылок (referencecolumnlist).
  2. Если в разделе referencedtableandcolumns специфицирован список столбцов, то набор имен столбцов из этого списка должен совпадать с набором столбцов уникальности, содержащемся в ограничении уникальности таблицы, на которую указывает ссылка.
  3. Если раздел referencedtableandcolumns не содержит списка столбцов, то для таблицы, на которую указывает ссылка, должно быть определено ограничение уникальности с ключевым словом PRIMARYKEY.
  4. Ограничение уникальности для таблицы, на которую указывает ссылка, должно не быть откладываемым.
  5. Таблица, на которую указывает ссылка, должна быть базовой и,

      (a) если ссылающаяся таблица является постоянной базовой, то и таблица, на которую указывает ссылка, должна быть постоянной базовой;




      - Начало -  - Назад -  - Вперед -