ORA-02292 : integrity constraint violation - child record found

에러 코드: ORA-02292

에러 메시지: "integrity constraint violation - child record found" (무결성 제약 조건 위반 - 자식 레코드 발견됨)

 

발생 원인

ORA-02292 에러는 무결성 제약 조건(integrity constraint)을 위반했을 때 발생합니다. 이 에러는 부모 테이블(parent table)에서 레코드(record)를 삭제하거나 수정하려고 시도할 때 해당 레코드에 의존하는 자식 테이블(child table)에 여전히 레코드가 남아 있을 경우에 발생합니다. 이는 주로 외래 키(foreign key) 제약 조건에 의해 발생합니다.

 

예제

다음 예제에서는 EMP 테이블이 DEPT 테이블에 외래 키로 연결되어 있습니다:

-- 부모 테이블 'DEPT'에 대한 외래 키 제약 조건이 설정된 'emp' 테이블
DELETE FROM DEPT WHERE DEPT_NO = 10;

 

위 SQL 쿼리를 실행했을 때 deptno = 10을 가진 dept 테이블의 레코드를 삭제하려고 하지만, emp 테이블에 deptno = 10을 참조하는 레코드가 여전히 존재한다면 ORA-02292 에러가 발생합니다.

 

해결 방법

이 에러를 해결하기 위해 다음과 같은 조치를 취할 수 있습니다:

  1. 자식 레코드 확인: 먼저 자식 테이블에서 해당 부모 키를 참조하는 모든 레코드를 확인합니다.
  2. 자식 레코드 삭제 또는 수정: 부모 레코드를 안전하게 삭제하거나 수정하기 전에, 자식 레코드를 먼저 삭제하거나 다른 키로 업데이트해야 합니다.
  3. CASCADE DELETE 옵션 고려: 외래 키 제약 조건에 CASCADE DELETE 옵션을 설정하면, 부모 레코드가 삭제될 때 자동으로 참조하는 자식 레코드도 함께 삭제됩니다.

"ORA-02292: integrity constraint violation - child record found" 에러는 데이터베이스의 무결성을 유지하는 데 중요한 역할을 합니다. 하지만, SI, SM에서는 데이터를 운영하는데 어려움이 있어 잘 사용하지는 않습니다. 하지만 매우 중요한 데이터에 대해 위와 같이 제약조건 설정을 하면 효과적으로 데이터를 관리 할 수 있습니다.