我正在使用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
此信息可能与OP的问题并不严格相关,但密切相关,可能会帮助处于类似情况(例如通过搜索)的其他人。
我在Amazon Aurora Serverless MySQL 5.6数据库上运行类似的CREATE FUNCTION
查询,并且遇到相同的语法错误。我正在使用Table Plus(v2.9.1,内部版本264)作为我的应用程序/客户端。
解决方案是删除2x DELIMITER
行。应用程序/客户端足够智能,可以解决定界符本身。