gpt4 book ai didi

mysql - 如何使用触发器更新 MySQL 中的不同表?

转载 作者:可可西里 更新时间:2023-11-01 07:08:30 27 4
gpt4 key购买 nike

我有两个 MySQL 表。投票表 (id, userId, postId, voteTypeId) 和帖子表 (id, postTypeId, userId, parentId) 表。我正在编写一个在插入选票后触发的触发器。

我想要触发器更新帖子表中的帖子。但是这篇文章与我在 postId 下的投票表中引用的文章不同;它是该帖子的父级。

BEGIN
CASE NEW.voteTypeId
WHEN 2 THEN UPDATE posts SET posts.acceptedAnswerId = NEW.postId WHERE posts.id = @the parent postId of NEW.postId
ELSE
BEGIN
END;
END CASE;
END

我试着用这个代替@the parent of...:

(SELECT posts.parentId FROM posts WHERE posts.id = NEW.postId)

但是我不认为你可以在触发器中执行 SELECTS,除非你使用某种类型的 SELECT INTO 语法。我对要更新的父帖子的唯一引用是它在投票中引用的子 postId。所以我不知道如何在不通过选择获取正确 ID 的情况下进行更新。

这可能吗?

最佳答案

我会这样做:

BEGIN
IF (NEW.voteTypeId = 2) THEN
UPDATE
posts AS p
CROSS JOIN
posts AS p2
ON
p.id = p2.parentId
SET
p.acceptedAnswerId = NEW.postId
WHERE
p2.id = NEW.postId;
END IF;
END

关于mysql - 如何使用触发器更新 MySQL 中的不同表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4899991/

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