首页 > 解决方案 > MYSQL 触发器 - 使用 WHERE 条件更新特定行

问题描述

我有一个“奴才”表,其中包含有关用户奴才的信息。最近我想到了助推器,这样用户的仆从如果获得一个就可以更快地工作。

我做了一个简单的触发器来计算用户有多少助推器:

CREATE TRIGGER `checkBoosters` AFTER UPDATE ON `minion`
 FOR EACH ROW UPDATE users
INNER JOIN minion ON minion.userID = users.id
SET users.booster = NEW.booster15 + NEW.booster30 + NEW.booster45 + NEW.booster60
WHERE users.id = minion.userID

但是我的问题是,如果您更改(比方说)特定userIDbooster15表中的值,则拥有奴才的每个人都将从表中 1 个助推器的触发器中获得计算minionusers

我注意到触发器有FOR EACH ROW UPDATE users,所以我猜这是导致问题的原因?有没有其他选择可以让这个触发器工作?

标签: mysqltriggers

解决方案


好的,所以我想通了。

我唯一改变的是条件,它工作得很好!

WHERE users.id = minion.userID -> WHERE users.id = NEW.userID

我希望这可以帮助和我有同样问题的人!:)

快乐编码!


推荐阅读