반응형
외래키 사용환경
- 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에 설정한 외래키 별칭]
반응형
'DB > MySQL' 카테고리의 다른 글
[MySQL] 저장 프로시저 (Stored Procedure) (0) | 2022.04.01 |
---|---|
[MySQL] 두 날짜 사이 일수, 주말(평일) 일수 구하기 (0) | 2022.04.01 |
[MySQL] 시간 더하기, 빼기 (DATE_ADD, DATE_SUB 함수) (0) | 2022.04.01 |
[MySQL] DATETIME 원하는 유형으로 변경 (YYMMDD) (0) | 2022.04.01 |
[MySQL] Trigger 사용법 / 특정 테이블 변경 시 관련 테이블 이벤트 실행 (0) | 2022.04.01 |