프로그래밍/데이터베이스

MySQL 외래키(Foreign Key) 정리

강남리치 2017. 5. 13. 20:07
반응형


※ 외래키 사용환경

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에 설정한 외래키 별칭] 



반응형