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

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

Следует обратить внимание на то, что внешний ключ может ссылаться на первичный ключ той же самой таблицы, т.е. может быть реализовано рекурсивное отношение.

Предложения ON DELETE и ON UPDATE используются вместе с REFERENCES при определении внешнего ключа и предназначены для описания типа изменения внешнего ключа при изменении соответствующего ему значения первичного ключа. Т.е. для столбца внешнего ключа таблицы-потомка задаются действия, автоматически выполняемые при удалении или обновлении поля первичного ключа в таблице-родителе, на который ссылается данный внешний ключ.

Для указания действий, которые должны выполняться над полем внешнего ключа при удалении и обновлении данных поля первичного ключа, используются следующие параметры:

- NO ACTION (используется по умолчанию) означает, что удаление или обновление первичного ключа родительской таблицы не изменяет ссылающийся внешний ключ, вследствие чего попытка операции над родительской таблицей может закончиться неудачей;

-        CASCADE для ON DELETE удаляет строки, содержащие значение ссылающегося внешнего ключа, а для ON UPDATE обновляет ссылающийся внешний ключ новым значением первичного ключа;

-        SET DEFAULT устанавливает значение ссылающегося внешнего ключа в заданное для него значение по умолчанию;

-        SET NULL устанавливает значение ссылающегося внешнего ключа в NULL.

Предложения ON DELETE и ON UPDATE могут использоваться одновременно (т.е. для столбца в одном ограничении могут быть указаны действия, которые необходимо выполнить при удалении, а также действия, которые необходимо выполнить при обновлении).

Например, необходимо создать таблицу Request, определив поле AccountCD в качестве внешнего ключа, ссылающегося на первичный ключ таблицы Abonent. Необходимо также, чтобы при удалении поля первичного ключа в таблице Abonent удалялись строки с соответствующим значением внешнего ключа в таблице Request. При обновлении первичного ключа в таблице Abonentдолжно происходить обновление соответствующего внешнего ключа в таблице Request. Следующий запрос создает требуемую таблицу: CREATE TABLE Request

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