gpt4 book ai didi

mysql - 触发器触发另一个触发器不起作用

转载 作者:行者123 更新时间:2023-11-30 23:37:58 24 4
gpt4 key购买 nike

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

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 中。

我在表 B 和表 A 关系上使用级联删除。

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

最佳答案

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

还需要把代码放在after delete触发器中,在before delete中,delete还没有发生,可能会被reversed。

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 ;

关于mysql - 触发器触发另一个触发器不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5986758/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com