MySQL - 在插入满足其他值的位置后触发更新另一个 table 中的列

MySQL - Trigger to update Column in another table after insert where it satisfys other values

第一次发帖,多多包涵:

我有 3 个 table:CWUsers、CWGamesList 和 CWOwnsGame。

CWUsers 包含用户名和他们通过购买的游戏获得的当前忠诚点数。

CWGamesList 包含游戏名称、控制台类型和用户在购买游戏时将获得的忠诚点数。

CWOwnsGame 是一个事务table,其中记录了用户名、游戏名称和主机类型。

购买游戏后使用忠诚度积分更新 CWUsers table 时遇到问题。

原来我是这样插入CWOwnsGame后触发的:

UPDATE CWUSERS SET loyaltyPoints = loyaltyPoints +
(SELECT loyaltyPoints FROM CWGameList WHERE gameConsole = "Wii" AND gameName = "Mario")
WHERE username = "bob"

虽然这只适用于一个实例,但您如何让它适用于购买的任何游戏。

谢谢

row 触发器中,您可以访问正在修改的行的两个版本:OLD包含 was 的行(如果存在),NEW 包含 will be 的行如果它将存在。)

为了使您的触发器按照您的描述工作,您可以使用 NEW[=33 中的值来调节 WHERE 子句=],像这样:

CREATE TRIGGER update_loyalty_points
  AFTER INSERT ON CWUserOwnsGame
  FOR EACH ROW
    UPDATE CWUsers
      SET loyaltyPoints = loyaltyPoints +
        (SELECT loyaltyPoints
          FROM CWGameList
          WHERE gameConsole = NEW.cName
            AND gameName = NEW.gName)
      WHERE username = NEW.uName;

我假设您已在表之间一致地命名列。请注意 NEW 中的正确列与 CWOwnsGame.

中的列具有相同的名称