[MySQL] foreign key 로 연결된 row 한 번에 지우기 - ON DELETE CASCADE

seonjeong·2023년 5월 11일

MySQL

목록 보기
9/9
post-thumbnail

여러 개의 테이블이 foreign key로 묶여 있을 경우, 부모 테이블을 삭제하려 할 때 다음과 같은 오류가 발생한다.

ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails

해결방안

  • 연관된 자식 테이블을 모두 삭제 후, 부모 테이블 삭제
  • ON DELETE CASCADE를 사용
// ON DELETE CASCADE 포함한 foreign key 재생성
// 괄호가 있는 경우 괄호를 꼭 사용해야 합니다.
ALTER TABLE 자식_table_name 
ADD FOREIGN KEY (foreign_key_연결받을_자식_테이블의_column_name) 
REFERENCES 부모_table_name (foreign_key_로_가져올_column_name)
ON DELETE CASCADE;

// 실제 사용 예제
ALTER TABLE order_items 
ADD FOREIGN KEY (item_id) 
REFERENCES orders (id)
ON DELETE CASCADE;




Reference

https://velog.io/@eensungkim/ON-DELETE-CASCADE-feat.-row-%ED%95%9C-%EB%B2%88%EC%97%90-%EC%A7%80%EC%9A%B0%EB%8A%94-%EB%B0%A9%EB%B2%95-TIL-78%EC%9D%BC%EC%B0%A8

profile
🦋개발 공부 기록🦋

0개의 댓글