Mysql
使用觸發器根據其他表中的條件更新表中的值
我有 2 個表,首先儲存所有比賽的詳細資訊1:其次是加入了哪些比賽的使用者2:
如果第二個表中的race_id計數為每個race_id 5個,我想在比賽表中將race_status更新為Full並將record_status更新為2。我為它創建了一個 MySQL 觸發器,這裡是它的觸發器程式碼:
CREATE TRIGGER `user_race_count` BEFORE INSERT ON `tbl_map_race` FOR EACH ROW BEGIN DECLARE a1,a2 INT; SELECT tbl_map_race.race_id, COUNT(tbl_map_race.race_id) INTO a1,a2 FROM `tbl_map_race` GROUP BY tbl_map_race.race_id; IF ((a1 = NEW.race_id) AND (a2>=5)) THEN UPDATE tbl_race SET tbl_race.race_status = 'Full', tbl_race.record_status = '2' WHERE tbl_race.race_id = @r_id; END IF; END
在觸發器中, tbl_race是第一個表,tbl_map_race是第二個表。
觸發器已成功創建,但是當我執行查詢以加入競賽時觸發器工作在後面,我無法更新第一個表中的值,但如果我刪除觸發器並執行查詢,我可以在第二個插入記錄桌子。對此的任何幫助將不勝感激。謝謝你。
CREATE TRIGGER `user_race_count` AFTER INSERT ON `tbl_map_race` FOR EACH ROW BEGIN IF 5 <= ( SELECT COUNT( /* DISTINCT */ user_id) FROM tbl_map_race WHERE race_id = NEW.race_id) THEN UPDATE tbl_race SET race_status = 'Full' , record_status = '2' WHERE race_id = NEW.race_id; END IF; END