Moh*_*mad 5 mysql triggers sql-update
我有两个MySQL表.投票表(id, userId, postId, voteTypeId)和帖子(id, postTypeId, userId, parentId)表表.我正在写一个在插入投票后触发的触发器.
我希望触发器更新posts表中的帖子.但这篇文章与我的投票表中提到的不一样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
Run Code Online (Sandbox Code Playgroud)
我尝试使用它而不是@的父...
(SELECT posts.parentId FROM posts WHERE posts.id = NEW.postId)
Run Code Online (Sandbox Code Playgroud)
但是你不认为你可以在触发器中做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
Run Code Online (Sandbox Code Playgroud)