我有以下触发器:
CREATE TRIGGER `delete_scores_trigger` AFTER DELETE ON `scores`
FOR EACH ROW BEGIN
UPDATE `users`
SET `darts_thrown` = ((SELECT `darts_thrown`
FROM (SELECT * FROM users) as utable
WHERE `id` = old.user_id) - old.darts_thrown)
WHERE `users`.`id` = old.user_id;
END
“分数”表有两个外键,如下所示:
ALTER TABLE `scores`
ADD CONSTRAINT `scores_game_id_foreign` FOREIGN KEY (`game_id`)
REFERENCES `games` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `scores_user_id_foreign` FOREIGN KEY (`user_id`)
REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
COMMIT;
我想在删除 SCORE 后更新“用户”上的“darts_ thrown”字段。由于外键的存在,每当删除“游戏”时,相应的“分数”记录也会被删除。在那一刻之后或之前,应使用触发器更新 'user'.'darts_thron'。
最佳答案
https://dev.mysql.com/doc/refman/5.7/en/create-table-foreign-keys.html引用操作部分中有一条注释级联外键操作不会激活触发器。
关于mysql - 删除记录时 SQL 触发器不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48402854/