DB/MySQL

[MySQL] 왜래키(Foreign Key) 정리

동호다찌 2022. 4. 1. 13:38
반응형

외래키 사용환경

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