如何解决MySql查询中的“ Invisible”语法错误? (在TRIGGER中使用UPDATE)

问题描述 投票:0回答:1

我有以下MySQL查询来创建触发器:

CREATE TRIGGER `updateParentLastInteractionOnInsert`
AFTER INSERT
ON `Post` FOR EACH ROW
BEGIN
    UPDATE `Post` SET `lastInteraction` = CURRENT_TIMESTAMP WHERE `id` = new.`parentPostId`;
END;

执行查询时,出现以下错误消息:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 5

由于这实际上没有任何意义,所以我做了自己的研究:

当我删除触发器主体中的所有内容(“ BEGIN”和“ END”之间的语句时,查询将成功处理并创建一个空触发器。

因此,我通过使用类似的语法运行以下查询来测试内部语句:

UPDATE `Post` SET `lastInteraction` = CURRENT_TIMESTAMP WHERE `Post`.`id` = 1 

也已成功执行。

我不知道这是怎么回事。如果触发器和内部语句在语法和逻辑上都是正确的,那么顶级查询在语法上又如何呢?也许更新语句与触发器不兼容?我查看了MySql的文档以及整个网络,但找不到任何相关信息。

我的查询出了什么问题?

mysql triggers sql-update
1个回答
0
投票

@@ BillKarwin的评论有答案。

此作品:

DELIMITER //
CREATE TRIGGER `updateParentLastInteractionOnInsert`
AFTER INSERT
ON `Post` FOR EACH ROW
BEGIN
    UPDATE `Post` SET `lastInteraction` = CURRENT_TIMESTAMP WHERE `id` = new.`parentPostId`;
END //
© www.soinside.com 2019 - 2024. All rights reserved.