RESTRICT, NO ACTION은 참조 중인 부모 삭제를 거부한다.
FK ACTIONS
부모 행이 바뀔 때 자식 FK의 처리 방식을 정한다
외래키 옵션은 부모 행 삭제나 키 변경이 일어났을 때 자식 행을 막을지, 같이 바꿀지, NULL로 비울지를 선언한다.
CASCADE와 SET NULL은 데이터가 자동으로 바뀐다.
| 옵션 | 부모 삭제 시 | 적합한 상황 |
|---|---|---|
RESTRICT |
참조 중이면 즉시 거부 | 삭제 실수를 바로 막아야 할 때 |
NO ACTION |
검사 시점 차이가 있을 수 있으나 보통 거부 | 대부분 DBMS의 기본 동작 |
CASCADE |
자식 행도 함께 삭제 | 주문 삭제 시 주문상세도 삭제 |
SET NULL |
자식 FK를 NULL로 변경 | 부서 삭제 후 직원 부서 미정 처리 |
SET DEFAULT |
자식 FK를 기본값으로 변경 | 지원 DBMS와 기본값 의미가 분명할 때 |
주의: CASCADE는 편하지만 한 번의 삭제가 여러 테이블로 번질 수 있다. 운영 데이터에서는 연쇄 범위를 먼저 계산한다.