[Oracle SQL] 오라클 외래키의 삭제 수정 하는 방법

2021-02-28


Photo by Nattu Adnan on Unsplash

오늘은 기존의 지정된 외래 키를 삭제 및 수정하는 방법을 알아보도록 하자.


-예제

 

외래 키를 제공할 SEE_GRADE 테이블

 

CREATE TABLE SEE_GRADE(
    GRADE NUMBER CONSTRAINT PK_GRADE PRIMARY KEY
);

 

SEE_GRADE의 기본키를 외래 키로 사용할 SEE_INFO 테이블

 

CREATE TABLE SEE_INFO (
    SEENUM NUMBER CONSTRAINT PK_SEENUM PRIMARY KEY, 
    NAME VARCHAR(20),
    AGE NUMBER,
    GRADE NUMBER,
    CONSTRAINT FK_GRADE FOREIGN KEY (GRADE)  
    REFERENCES SEE_GRADE(GRADE)
);

- 삭제

 

기존의 SEE_INFO의 외래 키를 삭제해 보도록 하겠다. 방법은 ALTER 문을 이용해 외래 키 제약조건을 제거하면 된다.

 

ALTER TABLE SEE_INFO DROP CONSTRAINT FK_GRADE;

- 외래키 재설정

 

외래 키를 재설정 역시 ALTER 구문을 이용하여 간단히, 다시 추가할 수 있다.

 

ALTER TABLE SEE_INFO ADD CONSTRAINT FK_GRADE
FOREIGN KEY (GRADE) REFERENCES SEE_GRADE(GRADE);

- 기타

추가적으로 외래 키 설정 시 옵션을 부여할 수도 있다. 여기서 ON DELETE 즉 참조하고 있는 기본키의 데이터 삭제 시의 외래 키의 데이터를 어떻게 할지 설정하도록 할 수 있다. 보통 NULL 값을 가질 수 있도록 SET NULL을 설정하는 경우가 많다. CASCADE는 기본키가 삭제되면 마치 연쇄작용처럼 이를 참조하고 있는 외래 키도 같이 삭제하게끔 옵셥을 부여할 수 도 있다.

 

ALTER TABLE SEE_INFO ADD CONSTRAINT FK_GRADE
FOREIGN KEY (GRADE) REFERENCES SEE_GRADE(GRADE)
ON DELETE SET NULL;
--ON DELETE CASCADE

메인 이미지 출처: Photo by Nattu Adnan on Unsplash