触发触发另一个触发器无效

时间:2011-05-13 02:48:12

标签: mysql sql triggers

我有四个表和两个触发器。

Table A     tirggerA  , when before delete === > insert deleted data into Tabele AAAAA
Table B     tirggerB  , when before delete === > insert deleted data into Tabele BBBBB

问题是triggerB在删除表B中的一些数据时效果很好。

我希望删除TableA中的数据,

  1. 表A中删除的数据插入表AAAAA
  2. 表B的删除数据(与表A数据相关)也插入表BBBBB中。
  3. 我在表B和表A关系中使用级联删除。

    问题是在TableA中删除某些数据时,TriggerB似乎永远不会触发。实际上它应该工作,因为我有这些表之间的级联删除关系。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

答案是将delete命令放在表A的触发器中。

此外,您需要将代码放在after delete触发器中,在删除之前,删除尚未发生,可能会被撤消。

DELIMITER $$

CREATE TRIGGER ad_tableA_each AFTER DELETE ON tableA FOR EACH ROW
BEGIN
  INSERT INTO tableAAAA (f1,f2,f3) VALUES (old.f1, old.f2, old.f3);
  DELETE FROM tableB b WHERE b.a_id = old.id; /*use this instead of foreign key*/
END $$

CREATE TRIGGER ad_tableB_each AFTER DELETE ON tableB FOR EACH ROW
BEGIN
  INSERT INTO tableBBBB (f1,f2,f3) VALUES (old.f1, old.f2, old.f3);
END $$

DELIMITER ;