Принцип ссылочной целостности данных в реляционных базах данных заключается в корректности значений внешних ключей. 2 Задача поддержки этого принципа — предотвращать или устранять нарушение корректности значений внешних ключей при внесении изменений в базу данных. 2
Механизм автоматического поддержания ссылочной целостности в системах управления базами данных (СУБД) работает так: 2
- При добавлении записи автоматически проверяется, ссылаются ли внешние ключи в этой записи на существующие записи в заявленных при описании связанных таблицах. 2 Если операция приведёт к появлению некорректных ссылок, она не выполняется — система возвращает ошибку. 2
- При редактировании записи проверяется: 2
- если изменяется её первичный ключ и на данную запись имеются ссылки, то операция редактирования завершается с ошибкой; 2
- если изменяется какой-то из внешних ключей, хранящихся в этой записи, и после изменения внешний ключ будет ссылаться на несуществующую запись, то операция редактирования завершается с ошибкой. 2
- При удалении записи проверяется, нет ли на неё ссылок. 2 Если ссылки имеются, то возможно три варианта дальнейших действий: 2
- Запрет — удаление блокируется и возвращается ошибка. 2
- Каскадное удаление — в одной транзакции производится удаление данной записи и всех записей, ссылающихся на данную. 2 Если на удаляемые записи также есть ссылки и настройки также требуют удаления, то каскадное удаление продолжается дальше. 2
- Присвоение NULL — во все внешние ключи записей, ссылающихся на данную, записывается маркер NULL. 2 Если хотя бы для одной из ссылающихся записей это невозможно (например, если поле внешнего ключа описано как NOT NULL), то удаление запрещается. 2
Большинство современных СУБД способны контролировать соблюдение правил ссылочной целостности, если таковые описаны в базе данных. 1 Для этой цели подобные СУБД используют различные объекты баз данных. 1 В этом случае все попытки нарушить правила ссылочной целостности подавляются с одновременной генерацией диагностических сообщений или исключений. 1