我有四个表和两个触发器。
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中的数据,
我在表B和表A关系中使用级联删除。
问题是在TableA中删除某些数据时,TriggerB似乎永远不会触发。实际上它应该工作,因为我有这些表之间的级联删除关系。有什么想法吗?
答案 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 ;