a 테이블의 기본키(primary key)가 외부 테이블에서 참조키로 제약조건이 설정되어있을때
a 테이블의 delete 문 수행시 ora-02292 : 무결성 제약조건 ~~~~ 에러가 발생되면서
삭제가 되지 않는다.
예)
create table A(
pt_id number primary key,
reference_id number,
constraint fk foreign key(reference_id)
references B
);
create table B(
ct_id number primary key,
ct_data varchar(1000) not null
);
select * from user_constraints where table_name = 'CHILDTABLE';
insert into B(ct_id,ct_data)
values(1,'data1');
insert into A(pt_id,reference_id)
values(1,1);
/*에러*/
delete from B; /*여기서 에러*/
delete from A;
/*역시 에러*/
drop table B; /*여기서 에러*/
delete from A;
드랍도 되지 않는다.
해결방법 1
순서를 바꾼다.
delete from A;
delete from B;
delete from A;
drop table B;
해결방법 2
alter table B drop constraints fk cascade;
자식테이블의 해당 제약조건을 강제 삭제한다.
해결방법 3
truncate table 테이블명
테이블의 모든 행을 강제로 삭제한다. 단 복구 불가능
발생하는 문제라고 하긴 뭐하지만 그냥 정리해봤다.
댓글 없음:
댓글 쓰기