프로젝트를 구상하고 진행하다보니 9개의 DB 테이블이 생겼다.
각각의 테이블들이 서로 연관되어 얽혀있는, 앞으로 얼마나 더 추가될지 모르는 우리의 DB..
그런데 옆에서 한 분이 그런 이야기를 하셨다.
"이거 데이터 하나 지우면 다른쪽에서도 연동돼서 잘 지워지는거지?"
Aㅏ.. 구글켜 구글켜...
ON DELETE CASCADE 라는 설정을 찾았다.
내가 이해한 바로는 Foreign Key로 얽혀있는 관계 중, 상위 테이블에서 데이터가 삭제되면 하위 테이블에서도 연계되어 삭제시켜주는 설정이다.
하위 테이블의 Foreign Key 관련 쿼리문 뒤에 적어주면 된다.
CREATE TABLE `donation` (
`dnt_id` int NOT NULL AUTO_INCREMENT ,
...
`org_id` int NOT NULL,
`user_id` int NOT NULL,
`payment_type` varchar(45) NOT NULL ,
`comment_dnt` varchar(100) DEFAULT ,
`is_regulation` varchar(45) NOT NULL DEFAULT 'False',
`comment_dnt_regulation` varchar(100) DEFAULT NULL,
PRIMARY KEY (`dnt_id`),
KEY `FK_1` (`user_id`),
KEY `FK_2` (`org_id`),
CONSTRAINT `FK_3` FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`)
ON DELETE CASCADE,
CONSTRAINT `FK_4` FOREIGN KEY (`org_id`) REFERENCES `organization` (`org_id`)
ON DELETE CASCADE
);
하마터면 나중에 다만들고 테스트할 때 삭제가 제대로 안돼서 밤샐뻔했다.
굳.