【问题标题】:MYSQL Triggers update tableMYSQL 触发器更新表
【发布时间】:2023-03-11 06:46:02
【问题描述】:

我以前从未做过触发器。

我有两张桌子:

MOVIES TABLE
---------------------------------
movie_id  | movie_name | rating |
---------------------------------
|    1    | Inception  |   4    |
|    2    |  Memento   |   5    |
|    3    | Spiderman  |   3    |


RATING TABLE
-------------------------------
rating_id | mov_id | rating   |
-------------------------------
|    1    |    1     |   4    |
|    2    |    2     |   5    |
|    3    |    2     |   5    |

在 RATING TABLE 中插入数据后,我想更新 MOVIES TABLE 的评分列。 如何使用这些数据更新该列:

SELECT ROUND(AVG(rating),1) "Raiting" FROM `rating` WHERE mov_id = mov_id

【问题讨论】:

  • 嗯,当它是第一次时,大多数人都会在谷歌上搜索语法。通过谷歌搜索“mysql create trigger”来做到这一点。手册里也有例子,你知道吗?然后试一试。如果你没有成功,请随时回来。不要忘记发布您尝试过的内容以及为什么它不起作用。那么我们很乐意提供帮助。
  • 我试过了,因为我失败了,我在这里发帖:|还是谢谢
  • 是的,那么请展示您的尝试。这样不仅更容易理解问题所在,而且还节省了我们一些工作。帮助别人帮助你;)

标签: mysql triggers


【解决方案1】:

试试这个:

delimiter //
CREATE TRIGGER upd_rating AFTER INSERT ON rating
FOR EACH ROW
BEGIN
     INSERT INTO movies
     SET rating = (SELECT ROUND(AVG(rating.rating),1)
                   FROM rating
                   WHERE mov_id = NEW.mov_id)
     WHERE movie_id = NEW.mov_id;
END;//
delimiter ;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-13
    • 1970-01-01
    • 2015-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多