Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по курсу ИСиТ.docx
Скачиваний:
6
Добавлен:
07.02.2024
Размер:
1.07 Mб
Скачать

Ограничения foreign key

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

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

Ограничение FOREIGN KEY может ссылаться на столбцы в таблицах этой же базы данных или столбцы этой же самой таблицы.

Ограничение FOREIGN KEY не обязательно должно быть связано с ограничением PRIMARY KEY в другой таблице. Кроме того, с помощью этого ограничения могут указываться столбцы ограничения UNIQUE в другой таблице.

Ограничение FOREIGN KEY может содержать значения NULL. Впрочем, если любой из столбцов сложного ограничения FOREIGN KEY содержит значения NULL, то при проверке будут пропущены все значения, составляющие ограничение FOREIGN KEY. Чтобы проверялись все значения сложного ограничения FOREIGN KEY, укажите для всех участвующих столбцов параметр NOT NULL.

Ссылочная целостность

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

Ограничение обеспечивает целостность ссылок следующим образом: оно запрещает изменение данных в таблице первичного ключа, если такие изменения сделают недопустимой ссылку в таблице внешнего ключа. Если при попытке удалить строку в таблице первичного ключа или изменить значение этого ключа окажется, что удаленному или измененному значению первичного ключа соответствует значение в ограничении FOREIGN KEY в другой таблице, то действие выполнено не будет. Для успешного изменения или удаления строки с ограничением FOREIGN KEY необходимо сначала удалить данные внешнего ключа в соответствующей таблице либо изменить данные в таблице внешнего ключа, которые связывают внешний ключ с данными другого первичного ключа. Microsoft SQL Server позволяет автоматизировать эти действия, путем указания двух дополнительных предложений ON DELETE и ON UPDATE.

Предложение ON DELETE определяет действия, предпринимаемые при попытке удаления строки, на которую указывает существующий внешний ключ. В предложении ON DELETE предусмотрены следующие параметры:

  • NO ACTION: удаления не произойдет и будет выведено сообщение об ошибке.

  • CASCADE: все строки с внешними ключами, указывающими на удаленную строку, также будут удалены.

  • SET NULL: всем строкам с внешними ключами, указывающими на удаленную строку, присваивается значение NULL.

  • SET DEFAULT: всем строкам с внешними ключами, указывающим на удаленную строку, присваивается установленное для них значение по умолчанию.

Предложение ON UPDATE определяет действия, предпринимаемые при попытке обновления значения потенциального ключа, на которое указывает существующий внешний ключ. Это предложение также поддерживает параметры NO ACTION, CASCADE, SET NULL и SET DEFAULT.

Соседние файлы в предмете Информатика