Принцип ссылочной целостности данных в реляционных базах данных заключается в корректности значений внешних ключей. 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 Если на удаляемые записи также есть ссылки и настройки также требуют удаления, то каскадное удаление продолжается дальше. ru.wikipedia.org
- Присвоение NULL — во все внешние ключи записей, ссылающихся на данную, записывается маркер NULL. ru.wikipedia.org Если хотя бы для одной из ссылающихся записей это невозможно (например, если поле внешнего ключа описано как NOT NULL), то удаление запрещается. ru.wikipedia.org
Большинство современных СУБД способны контролировать соблюдение правил ссылочной целостности, если таковые описаны в базе данных. dit.isuct.ru Для этой цели подобные СУБД используют различные объекты баз данных. dit.isuct.ru В этом случае все попытки нарушить правила ссылочной целостности подавляются с одновременной генерацией диагностических сообщений или исключений. dit.isuct.ru