如何在更新另一个表时更新MySQL表列

时间:2018-03-21 16:54:28

标签: mysql

我有两个表:产品和评论。在评论表中输入评论时,我希望Product表自动更新(review_count + 1)和(stars = avg of all stars)。我怎样才能做到这一点?。这两个表由product_id连接。我怎么能这样做?

This is the ERD

1 个答案:

答案 0 :(得分:0)

所以如果有其他人在想,我找到了答案。我不得不制作一个调用两个程序的触发器,因为我无法在同一个表上创建两个触发器。下面是代码:

MySQL的:

DELIMITER $$
create procedure update_review_count(IN pid INT)
update Product
set review_count=review_count+1
where product_id=pid;$$
DELIMITER ;

DELIMITER $$
create procedure update_stars(IN pid INT)
update Product
set stars=(select avg(stars) from Review where product_id=pid)
where product_id=pid;$$
DELIMITER ;

DELIMITER $$
create trigger review_trigger after insert on Review for each row
begin
    CALL update_review_count(new.product_id);
    CALL update_stars(new.product_id);
end $$
DELIMITER ;