我有一个数据库,用于跟踪我所在联赛的统计数据和平均值。我有一个结果表和一个排名表,我将结果中的“分数”添加到排名中的总体“分数”中。我目前有一个查询,它成功地将结果中的分数添加到积分表中。但是,当我添加新结果时,排名不会更新。
这是我的查询,我用它来总结结果到排名的分数。
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
有人能指出我正确的方向吗?有更好的方法来实现这一点吗?
谢谢,
- 杰森
你的触发器应该引用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
and delete
触发器。
如果您可以通过在需要时聚合点来做到这一点,那么这是一个更好的解决方案(或者至少更简单)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)