MySQL 외래키(Foreign Key) 정리
※ 외래키 사용환경
InnoDB 엔진을 쓰는 테이블에만 사용 가능하다.
※ 옵션 설명
외래키를 지정할 때는 몇가지 옵션이 존재하는데 이 옵션을 정확하게 파악하지 않고 사용하게 되면 나중에 운영에 큰 치명타를 입을 수 있으니 잘 알아두자!
변경 제약 : ON UPDATE {RESTRICT | CASCADE | NO ACTION | SET NULL}
삭제 제약 : ON DELETE {RESTRICT | CASCADE | NO ACTION | SET NULL}
CASCADE : A개체를 변경/삭제할때, A개체를 참조하고 있는 모든 개체들이 변경/삭제된다.
RESTRICT : A개체를 변경/삭제할때, A개체를 참조하고 있는 개체가 존재하면 A개체에 대한 명령(변경/삭제)이 취소된다.
NO ACTION : MySQL에서는 RESTRICT와 동일함
SET NULL : A개체를 변경/삭제할때, A개체를 참조하고 있는 모든 개체들의 값은 NULL로 셋팅된다.
SET DEFAULT : MySQL에서는 지원 하지 않음.
※ 테이블에 외래키 추가하기
형식) alter table [테이블명] add constraint [외래키 별칭] foreign key (외래키 적용할 컬럼명) references [부모테이블명] (참조할 컬럼) [옵션]
- constraint 에 설정할 외래기 별칠은 DB내에서 유일한 이름이여야하다.
- 옵션절을 사용하지 않을경우 기본 NO ACTION으로 적용된다.
※ 테이블에 외래기 삭제하기
형식) alter table [테이블명] drop foreign key [constrainst에 설정한 외래키 별칭]