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

Aam*_*mir 4 mysql sql parent-child foreign-key-relationship cascading-deletes

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

假设我有一个名为parent的表,其中包含id主键和24个关于这个父表的近似子表.

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

如果父项被删除,请告诉我有没有其他解决办法删除所有这些子行.

Sah*_*hah 15

您可以使用ON DELETE CASCADE.

ALTER TABLE childTable
  ADD CONSTRAINT `FK_key` FOREIGN KEY (`childColumnName`) 
  REFERENCES parentTable(`parentColumnName`) ON UPDATE CASCADE ON DELETE CASCADE
Run Code Online (Sandbox Code Playgroud)

要么

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 ;
Run Code Online (Sandbox Code Playgroud)

  • @AamirSohail:那么为涉及的表一次编写“ alter table”问题是什么?从长远来看,任何其他解决方案将需要更多工作。 (2认同)