2011-05-13 253 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 ;