2011-05-13 208 views
1

我有四个表和两个触发器。触发器触发另一个触发器不工作

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中删除一些数据

我想要的东西,从表A中删除数据时一样,

  1. 表A中删除的数据插入到表AAAAA
  2. 删除表B(与表A数据相关)的数据也插入到表BBBBB中。

我使用cascade删除表B和表A的关系。

问题是,当TableA中的某些数据被删除时,TriggerB似乎从不会触发。实际上,它应该有效,因为我有这些表之间的级联删除关系。有任何想法吗?

+1

大家好.. 我只是不使用两个表之间的级联删除,只是把在tirggerA删除表B的命令。现在运作良好。 谢谢。 :) – kitokid 2011-05-13 03:00:52

回答

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 ;