ORA-02291: integrity constraint violated - parent key not found
Oracle의미
외래 키 제약 조건이 위반되었다. 자식 테이블에 삽입된 값에 대응하는 부모 행을 찾지 못했다. 즉, 참조된 레코드가 존재하지 않는다.
원인
존재하지 않는 부모 레코드를 참조하는 INSERT/UPDATE, 부모 테이블 행이 아직 삽입되지 않음, 잘못된 로드 순서(부모보다 자식 먼저), 또는 대소문자나 공백 차이로 인한 매칭 실패.
해결 방법
먼저 부모 테이블에 해당 레코드를 삽입한 뒤 자식 테이블에 삽입한다. 참조가 존재하는지 확인한다: SELECT * FROM parent_table WHERE key_col = value; 대량 로드에서는 올바른 순서(부모 먼저)로 테이블을 처리한다. 위반 행을 찾으려면 NOT IN / anti-join으로 자식 테이블의 값을 부모 테이블과 비교한다.
같은 데이터베이스의 다른 항목
- ORA-00604error occurred at recursive SQL level
- ORA-01438value larger than specified precision allowed for this column
- ORA-01400cannot insert NULL into (column)
- ORA-02292integrity constraint violated - child record found
- ORA-00979not a GROUP BY expression
- ORA-00918column ambiguously defined
- ORA-06550line/column PLS-... PL/SQL compilation error