[Oracle] 오라클 ORA-02292 무결성 제약조건 자식레코드가 발견되었습니다 처리내용

정우씨 2022. 7. 20. 15:46

[Oracle] 오라클 ORA-02292 무결성 제약조건 자식레코드가 발견되었습니다 처리내용

 

 개요

컬럼 데이터를 변경하려 시도하던 도중 에러가 발생.

ORA-02292 무결성 제약조건 (SCHEMA.FK_NAME)이 위배되었습니다 - 자식 레코드가 발견되었습니다.

예전에 본 적이 있기도 한데 오랜만에 봐서 기억이 잘 안나서 구글링하여 처리했어요.

해당 에러는 부모의 데이터를 자식이 참조하고 있을 경우 표출됩니다.

 1. 제약조건 검색

SELECT TABLE_NAME
FROM USER_CONSTRAINTS
WHERE CONSTRAINT_NAME = 'FK_NAME';

TABLE_NAME 검색 후 테이블설계 Script를 확인하여 어떤 컬럼에 FK가 생성되었나 확인.

 

 2. 자식레코드 제거 & 데이터 수정

FK 컬럼에서 수정하고자하는 부모의 데이터를 가지고 있는 데이터가 있는지 확인.

저 같은경우는 한 테이블의 상위레벨 컬럼이 FK로 지정되어있어서 처음에 보는데 조금 혼동이 왔었어요.

code upper_code
34310 00
3431011 34310

위 테이블을 보면 code의 34310이란 데이터를 2번째 로우 upper_code에서 참조하고 있습니다.

34310을 참조하고있는 모든 데이터를 제거하거나 다른 값으로 UPDATE 시 code의 34310의 수정이 가능합니다.

 3. 처리결과

34310 코드를 참조하고있는 자식레코드를 모두 제거 or 수정후 code 데이터 수정 완료.

 

좋아요♥는 블로그 운영에 큰 도움이 됩니다.