从另一个表更新平均值的触发器

时间:2018-03-21 20:01:19

标签: mysql sql

我有两个表:产品和评论。我在插入新评论时试图创建一个更新产品表(列:星号)的触发器。它们通过product_id连接。我试过这段代码,但我猜它不对。

代码:

create trigger update_stars after insert on Review for each row 
update Product
set stars=(select avg(stars) from Review where product_id=Product.product_id)
where product_id=new.product_id;

ERD

1 个答案:

答案 0 :(得分:1)

对于sql代码,您可以使用基于内部联接的更新,例如:

update Product p
inner join (
  select product_id, avg(stars) avg_stars
  from Review
  group by product_id
) t on t.product_id = p.product_id
set stars=t.avg_stars