DB/Mysql
외래키(FK) 의 제약조건에 대해 알아보자!
hoonylab
2025. 4. 15. 11:23
728x90
반응형
🔍 외래 키 제약조건 예시 모음 (ON DELETE / ON UPDATE)
아래는 다양한 FOREIGN KEY 제약 조건 조합과 그 작동 방식을 예시로 정리한 것입니다.
✅ 예시 1: ON DELETE RESTRICT / ON UPDATE RESTRICT (기본값)
FOREIGN KEY (dept_id) REFERENCES department(dept_id)
ON DELETE RESTRICT
ON UPDATE RESTRICT
- 자식이 참조 중인 부모 row는 삭제/수정 불가
- 부서가 존재할 때는 해당 부서 직원 삭제 불가
✅ 예시 2: ON DELETE CASCADE / ON UPDATE CASCADE
FOREIGN KEY (dept_id) REFERENCES department(dept_id)
ON DELETE CASCADE
ON UPDATE CASCADE
- 부서 삭제 시 → 해당 부서 직원도 자동 삭제됨
- 부서 ID 변경 시 → 해당 부서 직원들의 dept_id도 함께 변경됨
✅ 예시 3: ON DELETE SET NULL / ON UPDATE CASCADE
FOREIGN KEY (dept_id) REFERENCES department(dept_id)
ON DELETE SET NULL
ON UPDATE CASCADE
- 부서 삭제 시 → 직원의
dept_id
는 NULL로 변경됨 (NULL 허용 필요) - 부서 ID 변경 시 → 직원의
dept_id
도 자동 변경됨
✅ 예시 4: ON DELETE CASCADE / ON UPDATE RESTRICT
FOREIGN KEY (dept_id) REFERENCES department(dept_id)
ON DELETE CASCADE
ON UPDATE RESTRICT
- 부서 삭제 시 → 직원도 함께 삭제됨
- 부서 ID를 변경하려면 → 참조 중인 직원이 없어야 함
✅ 예시 5: ON DELETE SET NULL / ON UPDATE SET NULL
FOREIGN KEY (dept_id) REFERENCES department(dept_id)
ON DELETE SET NULL
ON UPDATE SET NULL
- 부서 삭제 시 → 직원의
dept_id
가 NULL로 변경됨 - 부서 ID 변경 시 → 해당 부서의 직원들도
dept_id = NULL
이 됨
📝 참고 사항
SET NULL
사용 시 자식 컬럼이NULL
을 허용해야 함SET DEFAULT
는 MySQL에서 지원하지 않음NO ACTION
은RESTRICT
와 동일하게 동작함 (MySQL 기준)
728x90
반응형