簡體   English   中英

MySQL - 在滿足其他值的地方插入后觸發更新另一個表中的列

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

第一次發帖,請耐心等待:

我有 3 個表:CWUsers、CWGamesList 和 CWOwnsGame。

CWUsers 包含用戶名和他們通過購買的游戲獲得的當前忠誠度積分。

CWGamesList 包含游戲名稱、控制台類型和用戶在購買游戲時將獲得的忠誠度積分。

CWOwnsGame 是一個事務表,其中記錄了用戶名、游戲名稱和控制台類型。

購買游戲后使用忠誠度積分更新 CWUsers 表時遇到問題。

最初我在插入 CWOwnsGame 后有一個觸發器,如下所示:

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

雖然這僅適用於一個實例,但您將如何使其適用於購買的任何游戲。

謝謝

row觸發你有被修改訪問該行的兩個版本: OLD包含行,因為它(如果存在),以及NEW如果它會存在)包含因為這將是該行

為了使您的觸發器按照您的描述工作,您可以使用來自NEW值來調節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的列具有相同的名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM