[MySQL] 테이블 삭제 에러 (ERROR 3780)

장선규·2022년 10월 25일
0

DB

목록 보기
2/4

외래키가 존재하는 테이블을 삭제할때는 위와 같은 에러메시지가 발생한다.

어떻게든 내용을 지워야 할 경우에는 아래와 같이 외래키(Foreign key) 체크를 하지 않는다는 설정을 해주고 다시 원복을 해주는 방식으로 지울 수 있다.

set FOREIGN_KEY_CHECKS = 0;

truncate USER; //USER table

set FOREIGN_KEY_CHECKS = 1;

처음부터 이걸 가능하게 할 수는 없을까…

→ RESTRICT, CASCADE, NO ACTION, SET NULL 에 대해 알아보자

https://h5bak.tistory.com/125

레시피가 수정되면(on update) 같이 바뀌는 것들 (CASCADE)

레시피가 사라지면(on delete) 같이 사라지는 것들 (CASCADE)

  • 단계별요리행위(step_action)
  • 요리단계(recipe_steps)
  • 요리법댓글(recipe_comment)
  • 요리법별식재료(ingredients_of_recipe)
  • 요리법별조리도구(tools_in_recipe)

고민

  • 레시피를 삭제하면 요리법별식재료는 사라져야 한다. 그런데 요리법별식재료는 식재료를 참조하고 있음. 이러면 삭제가 안 되던데… → 아마 RESTRICT 상태라서 그런 것 같다. SET NULL을 하면 될 것 같다
  • 사용자가 삭제되었을 때 레시피도 사라지는가?
  • 사용자가 삭제되었을 때 사용자가 단 댓글도 사라지는가?
profile
코딩연습

0개의 댓글