SW/Database / / 2024. 12. 3. 09:19

ORA-02292: integrity constraint violated - child record found / 원인과 해결 방법

반응형

ORA-02292: integrity constraint violated - child record found / 원인과 해결 방법

ORA-02292 오류는 부모 테이블의 행을 삭제하거나 업데이트하려고 할 때 해당 행에 참조하는 자식 테이블의 데이터가 존재할 경우 발생합니다.

ORA-02292: integrity constraint violated - child record found / 원인과 해결 방법

 

 

ORA-02292 오류 설명

이 오류는 외래 키 제약 조건이 설정된 테이블 간 관계에서 데이터 무결성을 유지하기 위해 발생합니다. 참조 무결성 규칙을 위반하려는 작업을 방지하는 역할을 합니다.

오류 원인

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

  1. 자식 테이블에 종속된 데이터가 존재: 부모 테이블의 행을 삭제하려는 경우.
  2. 외래 키 제약 조건 미준수: 업데이트가 참조 무결성을 깨뜨리는 경우.

해결 방법 및 명령어 예시

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

1. 자식 테이블 데이터 확인

참조 무결성을 위반하는 데이터를 확인하려면 다음 쿼리를 실행합니다:

SELECT *
FROM child_table
WHERE foreign_key_column = 'value';

예시 결과:

CHILD_ID    FOREIGN_KEY_COLUMN
---------   ------------------
101         1001
102         1001

2. 자식 데이터 삭제

부모 테이블 행을 삭제하기 전에 자식 데이터를 먼저 삭제해야 합니다:

DELETE FROM child_table
WHERE foreign_key_column = 'value';

3. CASCADE 옵션 사용

외래 키 제약 조건을 CASCADE로 설정하면 부모 데이터를 삭제할 때 자식 데이터도 자동으로 삭제됩니다:

ALTER TABLE child_table
ADD CONSTRAINT fk_name FOREIGN KEY (foreign_key_column)
REFERENCES parent_table (primary_key_column)
ON DELETE CASCADE;

4. 제약 조건 무효화

임시로 제약 조건을 비활성화할 수도 있습니다. 하지만 이 방법은 추천되지 않습니다:

ALTER TABLE child_table DISABLE CONSTRAINT fk_name;

간단 요약

  • ORA-02292 오류는 자식 테이블 데이터가 부모 데이터를 참조하고 있을 때 발생합니다.
  • 해결 방법: 자식 데이터 삭제, CASCADE 설정, 또는 제약 조건 무효화.

 

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유