SW/Database / / 2024. 12. 4. 11:22

ORA-02291: Integrity Constraint Violated - Parent Key Not Found / 원인과 해결 방법

반응형

ORA-02291: Integrity Constraint Violated - Parent Key Not Found / 원인과 해결 방법

ORA-02291 오류는 자식 테이블에서 참조 무결성을 만족하지 못하는 외래 키 값이 삽입되거나 업데이트될 때 발생합니다.

 

 

 

ORA-02291: Integrity Constraint Violated - Parent Key Not Found / 원인과 해결 방법

 

 

 

ORA-02291 오류 설명

이 오류는 외래 키(Foreign Key) 제약 조건이 위반되었을 때 발생합니다. 외래 키가 부모 테이블의 기본 키 또는 고유 키를 참조하지 않을 경우에 나타나며, 데이터 무결성을 보호하기 위해 Oracle Database가 이를 허용하지 않습니다.

오류 원인

ORA-02291 오류가 발생하는 주요 원인은 다음과 같습니다:

  1. 부모 테이블의 키 없음: 자식 테이블의 외래 키가 부모 테이블의 기본 키 또는 고유 키를 찾을 수 없는 경우.
  2. 부모 데이터 삭제: 외래 키로 참조된 부모 데이터가 삭제된 경우.
  3. 외래 키 설정 오류: 잘못 정의된 외래 키 제약 조건.

해결 방법 및 명령어 예시

ORA-02291 오류를 해결하려면 다음 방법을 시도하세요:

1. 부모 데이터 존재 여부 확인

부모 테이블에서 참조하는 값이 존재하는지 확인하세요:

-- 부모 테이블 확인
SELECT * FROM parent_table
WHERE parent_key = '값';

결과가 없으면 참조 값을 부모 테이블에 추가하거나, 자식 테이블의 데이터를 수정하세요.

2. 외래 키 제약 조건 확인

외래 키 제약 조건을 점검하여 올바르게 설정되었는지 확인합니다:

-- 외래 키 제약 조건 확인
SELECT constraint_name, table_name 
FROM user_constraints
WHERE constraint_type = 'R';

필요시 제약 조건을 수정하거나 삭제 후 다시 정의합니다.

3. ON DELETE CASCADE 옵션 사용

부모 데이터가 삭제될 때 자식 데이터도 삭제되도록 `ON DELETE CASCADE` 옵션을 설정합니다:

-- 외래 키 제약 조건 수정
ALTER TABLE child_table
ADD CONSTRAINT fk_child_parent
FOREIGN KEY (foreign_key_column)
REFERENCES parent_table (parent_key_column)
ON DELETE CASCADE;

4. 데이터 삽입 순서 확인

항상 부모 테이블 데이터를 먼저 삽입한 후 자식 데이터를 삽입하세요:

-- 부모 데이터 삽입
INSERT INTO parent_table (parent_key, other_columns)
VALUES ('값', '다른 값');

-- 자식 데이터 삽입
INSERT INTO child_table (foreign_key, other_columns)
VALUES ('값', '다른 값');

간단 요약

  • ORA-02291 오류는 외래 키가 부모 테이블의 키를 참조하지 않을 때 발생합니다.
  • 해결 방법: 부모 데이터 추가, 외래 키 제약 조건 점검, ON DELETE CASCADE 설정.
  • 올바른 삽입 순서를 유지하여 데이터 무결성을 보장하세요.
반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유