删除记录时SQL触发器不起作用

时间:2018-01-23 13:25:09

标签: mysql sql database triggers

我有以下触发器:

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

'得分' table有两个外键,如下所示:

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;

我想更新字段' darts_thrown'在'用户'删除SCORE后。由于外键,每当“游戏”游戏时被删除,相应的分数'记录也将被删除。在该时刻之前或之前,'用户' dart_thrown'应该用触发器更新。

1 个答案:

答案 0 :(得分:0)

https://dev.mysql.com/doc/refman/5.7/en/create-table-foreign-keys.html参考操作部分中有一个注释级联外键操作不会激活触发器。

相关问题