gpt4 book ai didi

mysql - 使用子查询创建新触发器时出现问题

转载 作者:行者123 更新时间:2023-11-29 15:47:47 25 4
gpt4 key购买 nike

我正在尝试创建一个触发器,每当另一个表上有插入时,该触发器就会更新列。就我而言,每当我在表 student_likes_post 中插入新的点赞时,我希望表 forum_post 相应地更新其 likes 列。这是我的查询:

use mydb;

DELIMITER //
CREATE TRIGGER update_likes
after INSERT
ON student_likes_post FOR EACH ROW
BEGIN
UPDATE forum_post
SET forum_post.likes = (
select count(*)
FROM student_likes_post
WHERE student_likes_post.post_id = forum_post.id
);
END;

DELIMITER;

但是,当我运行它时,它会永远运行,什么也没有发生。子查询是单独工作的。我在同一张表 student_likes_post 上尝试了具有相同问题的其他触发器。知道如何让它发挥作用吗?您认为是表本身有问题还是代码有问题?

最佳答案

您可能只想更新 forum_post 中的行。对于学生喜欢的帖子,而不是所有forum_posts,对吧?

您的触发器当前正在更新 forum_post 中的所有行,并为 forum_post 中的每一行运行一次子查询。

这是编写触发器的另一种方法,它仅更新单个相应的 forum_post 行:

CREATE TRIGGER update_likes
after INSERT
ON student_likes_post FOR EACH ROW
BEGIN
DECLARE like_count INT;

SELECT COUNT(*) INTO like_count
FROM student_likes_post WHERE post_id = NEW.post_id;

UPDATE forum_post
SET likes = like_count
WHERE id = NEW.post_id;
END

关于mysql - 使用子查询创建新触发器时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56943561/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com