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