触发不更新

时间:2016-05-31 17:08:36

标签: php mysql

我的触发器看起来像这样:

CREATE TRIGGER findavg after INSERT 
ON rating 
FOR EACH row 
  UPDATE `profile` 
  SET    userscore = (SELECT Avg(rscore) 
                      FROM   rating 
                      WHERE  `profile`.`pid` = rating.raterid) 
  WHERE  pid = new.pid; 

,其中

PROFILE table - pID, name, userScore

RATING table - raterID, rScore, rDescription

它在我第一次实现此触发器时有效,但是昨天我将所有数据都放在配置文件和评级表中。因此,我为个人资料和评级插入了“新近”的数据。

现在,每当我插入“评分”时,触发器都不会更新 userScore。

现在,我有一些PROFILE在userScore中有“ 0 ”,即使在RATING表中,rScore的值为“6”。

我很困惑,因为我非常肯定基于语法,它已经是正确的了。

请帮帮我。谢谢。

1 个答案:

答案 0 :(得分:1)

尝试:

DELIMITER //

CREATE TRIGGER `findavg` AFTER INSERT ON `rating`
FOR EACH ROW
BEGIN
  UPDATE `profile`
  SET `userscore` = (SELECT AVG(`rscore`)
                     FROM `rating`
                     WHERE `raterid` = `pid`)
-- WHERE `pid` = NEW.`pid`;
  WHERE `pid` = NEW.`raterid`;
END//

DELIMITER ;

SQL Fiddle demo