我有一个包含大约50个表的数据库。
假设我有一个名为parent的表,其中包含id主键和24个近似子表,并引用了这个父表。
我没有用过删除级联。 我已经搜索了关于做连接可以在所有子表中执行删除。但加入20-30桌?它太多了。
如果父项被删除,请告诉我有没有其他方法可以删除所有这些子行。
答案 0 :(得分:14)
您可以使用 ON DELETE CASCADE 。
ALTER TABLE childTable
ADD CONSTRAINT `FK_key` FOREIGN KEY (`childColumnName`)
REFERENCES parentTable(`parentColumnName`) ON UPDATE CASCADE ON DELETE CASCADE
或强>
在父表上创建AFTER DELETE TRIGGER
。添加子表的DELETE查询。
DELIMITER $$
CREATE
TRIGGER `tn_aur_department_master` AFTER DELETE ON `tn_parentTable`
FOR EACH ROW BEGIN
DELETE FROM childTable WHERE parentId = old.parentId;
END;
$$
DELIMITER ;