Некоторые способы контроля ссылочной целостности при использовании внешних ключей:
- Автоматическая проверка при добавлении записи. ru.wikipedia.org Система проверяет, ссылаются ли внешние ключи в новой записи на существующие записи в связанных таблицах. ru.wikipedia.org Если операция приведёт к появлению некорректных ссылок, она не выполняется — система возвращает ошибку. ru.wikipedia.org
- Проверка при редактировании записи. ru.wikipedia.org Если изменяется первичный ключ и на запись имеются ссылки, то операция редактирования завершается с ошибкой. ru.wikipedia.org Если изменяется какой-то из внешних ключей, хранящихся в записи, и после изменения внешний ключ будет ссылаться на несуществующую запись, то операция редактирования также завершается с ошибкой. ru.wikipedia.org
- Проверка при удалении записи. ru.wikipedia.org Система проверяет, нет ли на запись ссылок. ru.wikipedia.org Если ссылки имеются, то возможно несколько вариантов дальнейших действий: ru.wikipedia.org
- Запрет — удаление блокируется и возвращается ошибка. ru.wikipedia.org
- Каскадное удаление — в одной транзакции производится удаление данной записи и всех записей, ссылающихся на неё. ru.wikipedia.org Если на удаляемые записи также есть ссылки и настройки также требуют удаления, то каскадное удаление продолжается дальше. ru.wikipedia.org
- Присвоение NULL — во все внешние ключи записей, ссылающихся на данную, записывается маркер NULL. ru.wikipedia.org Если хотя бы для одной из ссылающихся записей это невозможно (например, если поле внешнего ключа описано как NOT NULL), то удаление запрещается. ru.wikipedia.org
Также для контроля ссылочной целостности при использовании внешних ключей используются каскадные ограничения целостности, которые определяют действия ядра СУБД, когда пользователь пытается удалить или обновить ключ, на который имеется точка внешних ключей. learn.microsoft.com Некоторые варианты каскадных действий: NO ACTION, CASCADE, SET NULL, SET DEFAULT. learn.microsoft.com citforum.ru