将定界符与Aurora Serverless MySQL 5.6一起使用时的语法错误

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

我正在使用Aurora无服务器MySQL 5.6创建以下触发器,当将数据插入到另一个表中但接收到语法错误时(特别是在Delimiter关键字周围),它将更新一个表。

DELIMITER $$
CREATE TRIGGER Create_Media_Like_Trigger AFTER INSERT ON MediaLike
FOR EACH ROW
BEGIN 
    IF NEW.likeType = 'LIKE' THEN
        UPDATE Media 
        SET Media.numLikes = Media.numLikes + 1 
        WHERE Media.mediaId = NEW.mediaId;
    ELSEIF NEW.likeType = 'DISLIKE' THEN
        UPDATE Media 
        SET Media.numLikes = Media.numLikes - 1 
        WHERE Media.mediaId = NEW.mediaId;
    ENDIF;
END $$
DELIMITER ;

就像我上面说的,我收到有关Delimiter的语法错误,此问题是AWS特定的,我该如何解决?

更新错误消息:

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 'DELIMITER $$ CREATE TRIGGER Create_Media_Like_Trigger 
AFTER INSERT ON MediaLike ' at line 1

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 'ELSEIF NEW.likeType = 'DISLIKE' THEN UPDATE Media SET 
Media.numLikes = Media.num' at line 1

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 'END $$' at line 1
mysql amazon-rds-aurora
1个回答
0
投票

此信息可能与OP的问题并不严格相关,但密切相关,可能会帮助处于类似情况(例如通过搜索)的其他人。

我在Amazon Aurora Serverless MySQL 5.6数据库上运行类似的CREATE FUNCTION查询,并且遇到相同的语法错误。我正在使用Table Plus(v2.9.1,内部版本264)作为我的应用程序/客户端。

解决方案是删除2x DELIMITER行。应用程序/客户端足够智能,可以解决定界符本身。

© www.soinside.com 2019 - 2024. All rights reserved.