更新更新后的Mysql触发器

时间:2014-04-18 16:58:00

标签: mysql sql

我有一张表格如下:

+---------+------------+-------+-------+--------+--------+--------+
| Matchid | Date       | TeamA | TeamB | ScoreA | ScoreB | Winner |
+---------+------------+-------+-------+--------+--------+--------+
|       1 | 2014-06-12 | BRA   | CRO   |   null |   null | NULL   |

这是足球比赛的固定表。

比赛开始后,我想更新 ScoreA ScoreB ,然后在更新后或甚至在更新之前触发,我会比较得分和相应地更新获胜者字段。

当我在表上创建更新触发器时,我无法更新任何字段,我读到这是不可能的。然后我想到创建更新的日志,即我创建了一个类似的表,我想在日志表中插入所有新旧记录。 但这也是不可能的。

有什么方法可以实现这个目标吗? 感谢

1 个答案:

答案 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

DEMO