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 ACTIONRESTRICT와 동일하게 동작함 (MySQL 기준)
728x90
반응형