これが私のコードです
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
問題なく動作します。
誰が何が悪いのか知っていますか?
EDITED
はい、テーブル user_profiles 内に外部キー制約があります。
基本的に、 table の行user
が削除されると、 table の対応する行が削除されますuser_profiles
。
したがって、外部キー制約アクションの前にトリガーが最初に実行されるという間違った仮定をしています
これを行う最善の方法はAFTER DELETE
、テーブル user_profiles 自体でトリガーを使用することです。
残念ながら、mysqlは外部キー制約でトリガーをアクティブにしません