본문으로 바로가기

[Oracle] ORA-02292 무결성 제약조건

category 실무 짬바/Oracle 2019. 2. 21. 20:47

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

에러 메세지에서 BBB를 소중히 기억한다.


1
2
3
SELECT CONSTRAINT_NAME, TABLE_NAME, R_CONSTRAINT_NAME
  FROM USER_CONSTRAINTS
 WHERE CONSTRAINT_NAME = 'BBB';



위 SQL문에서 다른건 수정하지않고 BBB만 바꾸어 실행한다.

그럼 TABLE_NAME이 나오는데,

그 테이블을 열어서 잘 찾아보면 삭제하고자 한 테이블의 FK가 보인다.

이럴 때 해결방법

1) 자식레코드가 있는지 검사 후 있을 경우 사용자에게 삭제불가 경고메세지를 띄운다.

1
2
3
SELECT COUNT(*)
  FROM TABLE_NAME
 WHERE FK = 'FK값';


위 SQL문으로 자식레코드를 찾을 수 있다.

2) 자식레코드까지 모조리 씨를 말려버린다.

그냥 DELETE 하면 된다.