4

这是我的代码

CREATE TRIGGER `agent_maintenance` AFTER DELETE ON `users`
FOR EACH ROW BEGIN
INSERT INTO deleted_agents (agent_id, fullname, email, mobile_no, deleted) 
SELECT user_id, fullname, email, mobile_no, NOW() FROM user_profiles WHERE user_id = OLD.id;
END
//
DELIMITER ;

显然没有任何东西被插入到表 deleted_agents
但是当我将事件更改为它时,BEFORE DELETE它工作得很好。
有谁知道出了什么问题?

已编辑
是的,表 user_profiles 中有外键约束。
基本上,当 table 中的一行user被删除时,它将删除 table 上的对应行user_profiles

所以我做了一个错误的假设,即在任何外键约束操作之前首先执行触发器

最好的方法是AFTER DELETE对表 user_profiles 本身使用触发器。
不幸的是,mysql dosent 激活了外键约束的触发器

4

1 回答 1

2

难道是因为该行已被删除,user_profiles 表上的级联删除触发器已执行,而 WHERE 子句找不到 user_id?

于 2013-09-17T20:16:30.013 回答