547: Оператор INSERT/UPDATE/DELETE конфликтует с ограничением FOREIGN KEY / CHECK
SQL ServerЧто это значит?
Оператор нарушил ограничение FOREIGN KEY или CHECK. Он либо сослался на несуществующую родительскую строку, либо записал значение, нарушающее правило CHECK, либо попытался удалить родительскую строку, на которую ещё есть ссылки.
Почему возникает?
FK: родительская строка, на которую ссылается вставленная дочерняя строка, не существует. DELETE/UPDATE: от удаляемой/изменяемой родительской строки зависят дочерние строки. CHECK: значение столбца не удовлетворяет заданному условию.
Как исправить
Сначала вставьте родительскую строку, затем дочернюю. При удалении сначала удалите зависимые строки или, где уместно, определите ON DELETE CASCADE. При нарушении CHECK приведите значение в соответствие с правилом. Определите нарушенное ограничение по его имени в тексте ошибки.
Ещё по этой СУБД
- 1205Транзакция (Process ID) оказалась во взаимоблокировке с другим процессом за ресурсы блокировки и выбрана жертвой взаимоблокировки
- 2627Нарушение ограничения PRIMARY KEY / UNIQUE KEY. Невозможно вставить дублирующийся ключ в объект
- 2601Невозможно вставить строку с дублирующимся ключом в объект с уникальным индексом. Дублирующееся значение ключа: ...
- 18456Ошибка входа для пользователя (Login failed)
- 8152Строковые или двоичные данные были бы усечены
- 2628Строковые или двоичные данные были бы усечены в таблице, столбце ...; усекаемое значение
- 1222Превышен тайм-аут запроса блокировки