Atomic Habits

[SQL] PK-FK 연결 시 PK 테이블 삭제 방법 본문

IT/SQL

[SQL] PK-FK 연결 시 PK 테이블 삭제 방법

체계성 2021. 11. 20. 09:35

질문

  Table 삭제시 외부키로 연결되어 있다면.... 삭제가 가능합니까?

답변

  참조하는 테이블(child table)은 삭제 가능하지만 참조되어지는 테이블(parent table)을 삭제하려면 Cascade Constraints 옵션을 추가로 사용해야 합니다.

  
-- 1. EMPLOYEE 테이블에 의해서 참조되어지는 DEPARTMENT 테이블을 생성한다. 
SQL> CREATE TABLE department
     (id NUMBER(2),
     dname VARCHAR2(10),
     CONSTRAINT deparment_dname_pk PRIMARY KEY(id));
  
 
--2. FOREIGN KEY를 포함하는, DEPARTMENT 테이블을 참조하는 
--   EMPLOYEE 테이블을 생성한다. 
SQL> CREATE TABLE employee
     (id NUMBER(2),
     name VARCHAR2(10),
     salary NUMBER(4),
     deptid NUMBER(2),
     CONSTRAINT employee_deptid_fk FOREIGN KEY(deptid) REFERENCES department(id));

--3. 참조되어지는 테이블을 삭제하려면 다음과 같이 에러가 발생한다. 
SQL> DROP TABLE department;
DROP TABLE department
           *
1행에 오류:
ORA-02449: 외래 키에 의해서 참조된 테이블에 유일/기본 키입니다
 
 
-- 4. 참조되어지는 테이블을 CASCADE CONSTRAINTS 옵션을 통해 삭제한다. 
SQL> DROP TABLE department CASCADE CONSTRAINTS;
 

-- 물론 참조하는 테이블은 그냥 삭제하면 된다.  
SQL> DROP TABLE employee;
    

참조 : http://www.gurubee.net/lecture/1420

 

Comments