Mysql

如何使用觸發器mysql更新一列

  • April 3, 2022

我有兩張桌子,第一張是

Table KEYS
|game | keys                 |
|WOW  | AAAAAAA-AAAAAAA-AAAAA|
|WOW  | BBBBBBB-BBBBBBB-BBBBB|
|L4D2 | AAAAAAA-AAAAAAA-AAAAA|

TABLE inventory
|game | country | language | pieces|
|WOW  | USA     | EN       |   0   | (its 0 by default)
|L4D2 | USA     | EN       |   0   |       ""

我想要實現的是庫存上的列件由 COUNT 鍵表的遊戲列更新,所以最後我的庫存表應該看起來像

|game | country | language | pieces|
|WOW  | USA     | EN       |   2   |
|L4D2 | USA     | EN       |   1   |

我試過的

DELIMITER $$
CREATE TRIGGER 'inventario' AFTER INSERT ON `KEYS` FOR EACH ROW BEGIN
UPDATE inventory.pieces WITH SELECT COUNT(*) keys.game FROM keys WHERE keys.game = inventory.game
END $$;

我不知道在 KEYS 表上更新/插入數據後是否有任何其他方法可以自動實現這一點

如果您說 in 中的行inventory必然存在,則 Trigger 的主體是這樣的:

FOR EACH ROW
   UPDATE inventory
       SET pieces = pieces + 1
       WHERE old.game = inventory.game

如果您需要插入尚未創建的行:

FOR EACH ROW
   INSERT INTO inventory (
       ( game, country, language, pieces )
       VALUES
       ( OLD.game, 'USA', 'EN', 1 )
   ON DUPLICATE KEY UPDATE
       SET pieces = pieces + 1

(如果不是 USA 和 EN,則需要做一些事情。)

我真誠地道歉,我在發布後我試圖在任何地方搜尋和搜尋類型我注意到相關問題在過去已經得到了回答https://dba.stackexchange.com/a/135296/250535 抱歉這個無用的執行緒

引用自:https://dba.stackexchange.com/questions/310493