我有一张表格如下:
+---------+------------+-------+-------+--------+--------+--------+
| Matchid | Date | TeamA | TeamB | ScoreA | ScoreB | Winner |
+---------+------------+-------+-------+--------+--------+--------+
| 1 | 2014-06-12 | BRA | CRO | null | null | NULL |
这是足球比赛的固定表。
比赛开始后,我想更新 ScoreA 和 ScoreB ,然后在更新后或甚至在更新之前触发,我会比较得分和相应地更新获胜者字段。
当我在表上创建更新触发器时,我无法更新任何字段,我读到这是不可能的。然后我想到创建更新的日志,即我创建了一个类似的表,我想在日志表中插入所有新旧记录。 但这也是不可能的。
有什么方法可以实现这个目标吗? 感谢
答案 0 :(得分:3)
您可以更新BEFORE UPDATE
触发器中的字段。
CREATE TRIGGER set_winner BEFORE UPDATE
ON ScoreTable
FOR EACH ROW
SET NEW.Winner = CASE WHEN NEW.ScoreA IS NULL OR NEW.ScoreB IS NULL THEN NULL
WHEN NEW.ScoreA > NEW.ScoreB THEN NEW.TeamA
WHEN NEW.ScoreB > NEW.ScoreA THEN NEW.TeamB
ELSE "Tie"
END