Mysql 使用触发器更新第二个表

Mysql 使用触发器更新第二个表,mysql,triggers,Mysql,Triggers,我试图创建一个简单的触发器,但是,如果值来自@total或@sum,我无法在prato上设置媒体值。 我已经测试过用它们代替“1”或“1+1”,看看我是否更新不正确,或者问题是操作本身 DELIMITER $$ CREATE TRIGGER ratings_prato BEFORE INSERT ON ratings FOR EACH ROW BEGIN SET @total = @total + 1; SET @sum = NEW.stars +

我试图创建一个简单的触发器,但是,如果值来自@total@sum,我无法在prato上设置媒体值。 我已经测试过用它们代替“1”或“1+1”,看看我是否更新不正确,或者问题是操作本身

DELIMITER $$
CREATE
    TRIGGER ratings_prato BEFORE INSERT ON ratings
    FOR EACH ROW BEGIN
        SET @total = @total + 1;
        SET @sum = NEW.stars + @sum;
        UPDATE prato p SET p.media = @sum/@total WHERE p.id = 1;
    END;
$$
DELIMITER ;

有什么想法吗?

我已经完成了在触发器上误导每一行的
。我想,每次更新时,它都会在所有行中运行。但是,它不是为它更新的每一行执行,而是为它更新的每一行执行,这使事情成为可能

这是我触发的最后一个结果,插入评级,并更新食物(这是普拉托)

DELIMITER $$  
CREATE
  TRIGGER inserting_dishes_rating AFTER INSERT ON ratings  
  FOR EACH ROW BEGIN 
    IF(NEW.food_id is not null) THEN  
      SET @media = (SELECT SUM(stars) FROM ratings WHERE food_id = NEW.food_id) / (SELECT COUNT(*) FROM ratings WHERE food_id = NEW.food_id);
      UPDATE foods f SET f.rate = @media WHERE f.id = NEW.food_id;
    ELSE
      SET @media = (SELECT SUM(stars) FROM ratings WHERE restaurant_id = NEW.restaurant_id) / (SELECT COUNT(*) FROM ratings WHERE restaurant_id = NEW.restaurant_id);  
      UPDATE restaurants r SET r.rate = @media WHERE r.id = NEW.restaurant_id;
    END IF;
END