sql触发器在delete上实现反向级联

mzsu5hc0  于 2021-06-21  发布在  Mysql
关注(0)|答案(0)|浏览(262)

我这里有三张对我的问题很重要的table。辩论由几个论点组成,是博思的产物。当我删除一个辩论时,我想同时删除相关的论点,以及相应的帖子。
我尝试的第一件事是为参数创建一个cascade delete,但这不会删除post。实际上,这需要一个“反向”级联删除,因为post是参数的父级。正如在delete cascade选项上是否有任何“reverse”所建议的那样,我尝试在删除参数时添加一个触发器来同时删除帖子,但是这个问题(在delete cascade上没有触发触发器)显示mysql“触发器不是由外键操作激活的。”
所以我想通过创建一个触发器来解决这个问题,这个触发器完全符合我在第一段中解释的。

CREATE TRIGGER argument_delete BEFORE DELETE on debates
FOR EACH ROW
BEGIN
DELETE FROM posts
       WHERE posts.id IN (SELECT arguments.id FROM arguments WHERE arguments.debate_id = debates.id);
END

因为在删除帖子时参数会被级联删除,所以这应该是可行的。
然而,当一场辩论被删除时,这个触发点似乎不起作用。如果我删除辩论和参数之间的级联删除,我会得到一个错误,说存在外键约束冲突,或者当我保留前面引用的级联删除时,我只删除辩论和参数(而不是帖子)。
有人知道怎么做吗?
编辑:
实际上,触发器的delete部分基于以下问题:基于另一个表删除表中的所有行

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题