[오라클] 자식 테이블이 있는 부모테이블을 drop 하기

심심이·2024년 3월 5일
0

oracle

목록 보기
36/40

아래 코드를 참조하면 된다.
1. 부모테이블을 참조하는 자식의 fk 제약조건 삭제
2. 부모자식 관계가 없으므로 테이블을 drop purge 한다.

create table tbl_buseo_parent
 (buno     number(2)
 ,buname   varchar2(20)
 ,constraint PK_tbl_buseo_parent primary key(buno)
 );
-- Table TBL_BUSEO_PARENT이(가) 생성되었습니다.


create table tbl_sawon_child
 (sano    number(4)
 ,saname  varchar2(20)
 ,fk_buno number(2)
 ,constraint PK_tbl_sawon_child_sano primary key(sano)
 ,constraint FK_tbl_sawon_child_fk_buno foreign key(fk_buno) references tbl_buseo_parent(buno)
 );
-- Table TBL_SAWON_CHILD이(가) 생성되었습니다.

select *
from user_constraints
where table_name = 'TBL_SAWON_CHILD'; 
-- FK_TBL_SAWON_CHILD_FK_BUNO	R 레퍼런스가 있는 상태에서 

drop table tbl_buseo_parent purge;
-- 오류 보고 - 외래 키에 의해 참조되는 고유/기본 키가 테이블에 있습니다

--부모, 자식 관계인 fk 제약조건을 없애버린다

drop table tbl_buseo_parent cascade constraint purge;
-- Table TBL_BUSEO_PARENT이(가) 삭제되었습니다. : 제약조건 삭제 

select *
from user_constraints
where table_name = 'TBL_SAWON_CHILD'; 

/*
tbl_buseo_parent 테이블을 참조하고 있는 모든 자식테이블(지금은 tbl_sawon_child)에 존재하는
foreign key 중에서 tbl_buseo_parent 테이블을 참조하고 있는 foreign key 만 먼저 삭제한다.
그런 다음에는 부모자식 관계가 없으므로 tbl_buseo_parent 테이블을 drop purge 한다.
*/
profile
개발하는 심심이

0개의 댓글