on delete cascade not firing trigger

时间:2014-10-12 18:37:48

标签: mysql

我有一张名为' player_instance'然后是一个名为“惩罚”的表格。 (具有引用player_instance的外键)。我还有一张名为'得分的表。

我在惩罚上有一个DELETE TRIGGER,这样如果一行被删除,那么它将改变分数中的一列。我知道这有效 - 当删除惩罚时,它将减少分数列。

我还有一个ON DELETE CASCADE,如果删除了player_instance,那么所有相关的惩罚也将被删除。我知道这也有效。

但是当player_instance被删除时,它只会删除相关的惩罚而不会触发改变分数的触发器。任何人都可以帮助我理解为什么这不起作用?

非常感谢

3 个答案:

答案 0 :(得分:4)

'触发器不会被外键操作激活。'

http://dev.mysql.com/doc/refman/5.5/en/stored-program-restrictions.html

唉唉!

任何人都可以帮我解决问题吗?

答案 1 :(得分:0)

有关解决方法,请按照以下步骤操作

  1. 在外键引用中删除(ON DELETE CASCADE

  2. 替换(ON DELETE CASCADE)添加此触发器

    CREATE TRIGGER DELETE_CHILD_ROW BEFORE DELETE ON PARANT_TABLE
    FOR EACH ROW
    BEGIN
        DELETE FROM CHILD_TABLE WHERE PARANT_ID=OLD.PARANT_ID;
    END;
    

答案 2 :(得分:0)

是的,有。设置级联删除以设置空值,并在第一级触发器中使用空键删除记录。那应该触发删除触发器。我刚刚遇到了这个问题,现在正在测试。