ORA-02292: Нарушено ограничение целостности — найдена дочерняя запись
OracleЧто это значит?
Родительская строка удалена или её ключ изменён, но ограничение внешнего ключа этого не допустило, поскольку существуют зависимые дочерние записи.
Почему возникает?
Попытка выполнить DELETE родительской строки, у которой есть записи в дочерней таблице; FK определён без ON DELETE CASCADE; зависимые записи не были предварительно удалены.
Как исправить
Сначала удалите зависимые дочерние записи или перенесите их к другой родительской записи, затем удалите родительскую строку. Если бизнес-правило это допускает, пересоздайте внешний ключ с ON DELETE CASCADE: ALTER TABLE child DROP CONSTRAINT fk_name; ALTER TABLE child ADD CONSTRAINT fk_name FOREIGN KEY (my_column) REFERENCES parent(key_col) ON DELETE CASCADE; Чтобы найти зависимые строки, выполните запрос к дочерней таблице по родительскому ключу.
Ещё по этой СУБД
- ORA-01438Значение превышает точность, допустимую для этого столбца
- ORA-01400Невозможно вставить NULL в (столбец)
- ORA-02291Нарушено ограничение целостности — родительский ключ не найден
- ORA-00979Выражение не входит в GROUP BY (not a GROUP BY expression)
- ORA-00918Столбец определён неоднозначно
- ORA-06550Строка/столбец PLS-...: ошибка компиляции PL/SQL
- ORA-04068Существующее состояние пакетов было сброшено