본문 바로가기

데이터베이스

FOREIGN KEY 에 ON DELETE CASCADE 제약 사항 추가하기

반응형

 

SNS 웹 사이트를 개발하면서 테이블을 수정하던 도중에 한 사용자가 피드에 글을 쓰고 댓글을 달기 위해서 위와 같은 데이터 베이스를 구성하였습니다.

나중에 사용자 회원탈퇴를 구현하면서 a foreign key constraint fails 오류가 발생하였고, 회원을 backend 에서 delete 하면서 회원이 썼던 Feed 테이블이 있기 때문에 발생하는 오류였습니다. 회원탈퇴를 하고 연관된 데이터를 모두 삭제하기 위해서는 Foreign Key 에 ON DELETE CASCADE 속성을 추가해줘야합니다.

feed 와 comment 테이블에 걸려있는 Foreign keys 에 on delete cascade 제약사항을 추가 하기 위해서는 먼저 기존에 있었던 foreign key들을 제거 하고 다시 추가해야합니다.

-- 삭제하는 SQL

ALTER TABLE 테이블명 DROP FOREIGN KEY 포린키이름;

ALTER TABLE feed DROP FOREIGN KEY feed_ibfk_3;

 

이러한 식으로 먼저 foreign key를 삭제해야 합니다. 그 다음에는 on delete cascade 제약사항을 추가하는 SQL문은

-- 추가하는 SQL

ALTER TABLE 테이블명 ADD CONSTRAINT 포린키이름 FOREIGN KEY 자식속성 REFERENCES 부모테이블명(자식속성이 참고할 부모속성) ON DELETE CASCADE;

ALTER TABLE feed ADD CONSTRAINT FOREIGN KEY (user_id) REFERENCES user(id) ON DELETE CASCADE;

 

이때 포린키이름은 빈 상태로 두면 자동으로 생성됩니다.

반응형