![](/img/trans.png)
[英]After Insert MySQL Trigger to update values or insert a new row in another table
[英]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.