我有一个数据库,可以跟踪我所在的联赛的统计数据和平均值。我有一个结果表和一个排名表,我将结果中的“点数”添加到排名中的整体“积分”。我目前有一个查询,它成功地将结果中的点添加到排名表中。但是,当我添加新结果时,排名不会更新。
这是我的查询,我用它来评估从结果到积分的点数。
UPDATE standings s,( SELECT team_id, sum(points) as mysum
FROM results GROUP BY team_id) as r
SET s.points = r.mysum
WHERE s.team_id = r.team_id;
我正在尝试使用触发器自动更新整体点数。我是触发器的新手,在运行以下内容时收到语法错误#1064。
CREATE TRIGGER standingsUpdate
AFTER INSERT ON results
FOR EACH ROW
BEGIN
UPDATE standings s,( SELECT team_id, sum(points) as mysum
FROM results GROUP BY team_id) as r
SET s.points = r.mysum
WHERE s.team_id = r.team_id;
END
有人能够指出我正确的方向吗?有没有更好的方法来实现这一目标?
谢谢, - 杰森
答案 0 :(得分:0)
您的触发器应该引用 new :
DELIMITER $$
CREATE TRIGGER standingsUpdate
AFTER INSERT ON results
FOR EACH ROW
BEGIN
UPDATE standings s
SET s.points = s.points + new.points
WHERE s.team_id = new.team_id;
END;$$
DELIMITER ;
但是,要小心。您还应该有update
和delete
次触发器。
如果你可以通过在需要时聚合点来做到这一点,那么这是一个更好的解决方案(或者至少更简单)。