快速MySQL触发器更新

时间:2012-02-13 18:43:40

标签: mysql

我需要更改此触发器以指向刚刚更新的列,以便将NEW.song_id更改为??谢谢!

DROP TRIGGER IF EXISTS `ratings_update`//
CREATE TRIGGER `ratings_update` AFTER UPDATE ON `ratings2`
FOR EACH ROW update SONGS set
rating_sum = rating_sum + NEW.rating,
rating = rating_sum / rating_count
where id = NEW.song_id
//

编辑vvv

DROP TRIGGER IF EXISTS `ratings_upd`//
CREATE TRIGGER `ratings_upd` AFTER UPDATE ON `ratings2`
FOR EACH ROW update SONGS set
rating_sum = rating_sum + NEW.rating - OLD.rating,
rating_count = rating_count,
rating = rating_sum / rating_count
where id = NEW.song_id
//

这是我为触发器提出的问题,但是当我运行它时它会给我带来这个错误..

1064 - 您的SQL语法出错;查看与您的MySQL服务器版本相对应的手册,以便在第1行

附近的'// CREATE TRIGGER ratings_upd更新后ratings2每次行更新'附近使用正确的语法

1 个答案:

答案 0 :(得分:0)

OLD在更新之前访问值,NEW在更新后访问值。

来自http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html

您可以使用别名OLD和NEW来引用主题表(与触发器关联的表)中的列。 OLD.col_name在更新或删除之前引用现有行的列。 NEW.col_name引用要插入的新行的列或更新后的现有行。