-
외래키(FK) 의 제약조건에 대해 알아보자!DB/Mysql 2025. 4. 15. 11:23728x90반응형
🔍 외래 키 제약조건 예시 모음 (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반응형'DB > Mysql' 카테고리의 다른 글
[Mysql] 트랜잭션과 ACID 이해하기! (0) 2025.04.15 [Mysql] 인덱스 생성 시 고려 사항 (테이블, 쿼리 예제) (0) 2025.04.15 [Mysql] Transaction Row Lock 전파되는 경우? (0) 2025.04.15 🔐 MySQL Lock 이해하기 – 데이터 일관성과 성능 관리를 위한 필수 개념 (0) 2025.04.10 ✅ MySQL 테이블 간 관계 설정 – 물리적 FK vs 논리적 FK, 그리고 Lock 이슈까지! (0) 2025.04.10