这是我的代码
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 激活了外键约束的触发器