2021-02-28
오늘은 기존의 지정된 외래 키를 삭제 및 수정하는 방법을 알아보도록 하자.
-예제
외래 키를 제공할 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