mysql - 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 个助推器的触发器中获得计算minion
users
我注意到触发器有FOR EACH ROW UPDATE users
,所以我猜这是导致问题的原因?有没有其他选择可以让这个触发器工作?
解决方案
好的,所以我想通了。
我唯一改变的是条件,它工作得很好!
WHERE users.id = minion.userID -> WHERE users.id = NEW.userID
我希望这可以帮助和我有同样问题的人!:)
快乐编码!
推荐阅读
- node.js - Hyperledger Fabric 2.3 连接问题
- node.js - Node JS 加密模块困扰 Express 会话
- api - Amadeus Safe Place API
- php - laravel api 的端点命名
- google-sheets - 基于其他工作表的列获取第 4 列
- javascript - 如果文本溢出,如何切换显示更多按钮
- javascript - 无法以角度访问数据成员
- docker - Docker for Windows 无法访问 RabbitMQ ip,除非端口绑定到 localhost
- javascript - Deno 中 writeJson 的格式输出
- python - 打印特定行之后的行