Ссылочная целостность данных в реляционных базах данных обеспечивает согласованность и логическую целостность данных во всех связанных таблицах. appmaster.io
При обновлении записей ссылочная целостность работает следующим образом: 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
Для обеспечения ссылочной целостности также могут использоваться триггеры — процедурные блоки кода, которые могут выполняться автоматически в ответ на определённые события, такие как INSERT, UPDATE, DELETE или TRUNCATE. appmaster.io