如果在mysql中删除父行,如何自动删除所有引用行?

时间:2014-01-23 06:57:39

标签: mysql sql parent-child foreign-key-relationship cascading-deletes

我有一个包含大约50个表的数据库。

假设我有一个名为parent的表,其中包含id主键和24个近似子表,并引用了这个父表。

我没有用过删除级联。 我已经搜索了关于做连接可以在所有子表中执行删除。但加入20-30桌?它太多了。

如果父项被删除,请告诉我有没有其他方法可以删除所有这些子行。

1 个答案:

答案 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 ;