首页 > 解决方案 > MariaDB 在没有外键关系的行上删除 CASCADE

问题描述

我有一个问题,在过去的几天里我一直在头疼。我有一个关系数据库(mariaDB),它有两个表。表A和表B。表A和自己有关系,当删除一行时,可能会删除多个(通过on delete CASCADE)。表 B 与表 A 没有关系。我无法创建关系,因为表中当前存在的行可能有也可能没有正确的(强制这种关系)数据(我对此没有影响)。

当我从表 A 中删除一条记录时,我希望表 B 中的隐式相关数据也被删除。由于无法创建外键,因此删除 CASCADE 似乎是不可能的。我想到了一个触发器,它会在表 A 中的每次删除时找到相关行,但是,触发器不会在由 on delete CASCADE 删除的行上触发。这意味着当 X 行(来自表 A)由于 CASCADE 被删除时,表 B 中的相关数据将不会被删除。

如果我不得不将其总结为一个问题:是否可以在不使用外键或触发器的情况下删除一行,例如在删除 CASCADE 时?

感谢阅读,不胜感激!

标签: mysqltriggersmariadbcascade

解决方案


感谢@Akina。

迭代与触发器中删除的行相关的行,然后删除与表 B 中这些行相关的所有行。这可行,但我目前还不能接受我自己的答案。


推荐阅读