DBAtlas · Атлас эксплуатации баз данных

ORA-02291: Нарушено ограничение целостности — родительский ключ не найден

Oracle

Что это значит?

Нарушено ограничение внешнего ключа. Не найдена родительская строка, соответствующая значению, вставленному в дочернюю таблицу; то есть запись, на которую выполняется ссылка, не существует.

Почему возникает?

INSERT/UPDATE со ссылкой на несуществующую родительскую запись, строка родительской таблицы ещё не вставлена, неверный порядок загрузки (дочерние раньше родительских) или несовпадение из-за различий в регистре или пробелах.

Как исправить

Сначала вставьте соответствующую запись в родительскую таблицу, затем в дочернюю. Убедитесь, что ссылка существует: SELECT * FROM parent_table WHERE key_col = value; При массовой загрузке обрабатывайте таблицы в правильном порядке (сначала родительские). Чтобы найти нарушающую строку, сравните значение в дочерней таблице с родительской с помощью NOT IN / anti-join.

Открыть в DBAtlas →

Ещё по этой СУБД