반응형
🚫 ORA-02292: integrity constraint (USER.CONSTRAINT) violated - child record found
1️⃣ 원인
ORA-02292 무결성 제약조건 위반은 삭제대상 테이블의 데이터가 다른 테이블 데이터의 FK값일 경우에 발생한다. 즉, 부모테이블(삭제대상데이터) 를 참조하는 자식테이블의 데이터가 존재하기 때문에 삭제 할 수 없다.
2️⃣ 해결
부모 테이블의 데이터를 삭제하기 전에 해당 데이터를 참조하는 자식테이블의 데이터를 제거하면 된다.
참조하는 테이블이 무엇인지 쉽게 찾는 방법은 에러가 발생했을때 제약조건의 이름(XXX)을 아래 쿼리의 where절에 넣어준 후 실행시키면 된다.
▶ ORA-02292: 무결성 제약조건(user.XXX)이 위배되었습니다- 자식 레코드가 발견되었습니다
select
constraint_name,
table_name,
r_constraint_name
from
user_constraints
where
constraint_name = 'XXX';
또한 부모테이블의 데이터 제거시 자식 테이블 데이터도 자동으로 제거되는 "ON DELETE CASCADE" 를 테이블 생성시 넣어주는것도 하나의 방법이다.
반응형
'Database > Oracle' 카테고리의 다른 글
[Oracle] ORA-01476: 제수가 0 입니다 (0) | 2022.02.23 |
---|---|
[Oracle] 컬럼 데이터 타입(Byte, Char) (0) | 2022.01.18 |
[Oracle] ORA-01849: 시간은 1에서 12 사이어야 합니다 (0) | 2022.01.14 |
[Oracle] ORA-01810: 형식 코드가 두 번 나타났습니다 (0) | 2022.01.14 |
[Oracle] ORA-01861: 리터럴이 형식 문자열과 일치하지 않음 (0) | 2022.01.11 |
최근댓글