在级联删除中触发调用

use*_*690 25 mysql triggers cascade cascading-deletes

我在MySQL中有表"A".它有一些参考,级联删除到一些其他表("B","C","D"......).当某些内容从"A"中删除时,我需要使用触发器.当我直接从"A"删除记录时,此触发器有效.但它不适用于级联删除.是否存在任何版本的MySQL,我的触发器将与级联删除一起使用?或者,也许还有另一种方式来打电话

Nie*_*Wet 30

来自 http://dev.mysql.com/doc/refman/5.6/en/innodb-restrictions.html

级联外键操作不会激活触发器

换句话说,您不能使用级联删除触发器.

  • 我每天都讨厌mysql (44认同)
  • 我刚发现这个问题,而且它非常愚蠢:-( (3认同)
  • 对不起,我打算回复@yonessafari.要回答这个问题仍然是一个错误:https://bugs.mysql.com/bug.php?id = 11472 (3认同)

jco*_*and 6

总结@Niel de Wet和@Browny Lin的答案:

  1. 遗憾的是,级联删除不会激活MySQL中的触发器.
  2. 一种解决方案是不使用级联删除,而是通过另一个触发器实现自动删除.


小智 5

让我分享一下从我发现这个问题存在的第一天起我是如何“解决”这个问题的。我将触发器从级联表复制到直接删除的第一个表中。它就是有效的。

很多时候这只是复制/粘贴的问题,有时需要大量重写代码。

最好的部分是,当 Oracle 最终修复此Bug时,您只需从上述表中删除触发器代码即可。瞧!