Phpmyadmin 在“END”附近创建触发器语法错误

Posted

技术标签:

【中文标题】Phpmyadmin 在“END”附近创建触发器语法错误【英文标题】:Phpmyadmin create trigger syntax error near 'END' 【发布时间】:2016-10-03 22:21:18 【问题描述】:

我正在尝试在 phpMyAdmin 中创建一个触发器,但每次尝试创建它时都会遇到相同的错误。错误是:

#1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 5 行的“END”附近使用正确的语法

我似乎根本无法让它工作,我看到的关于这个主题的所有问题都指向没有将分隔符设置为问题,但我的已经设置好了。任何帮助都会很好,我创建了一个非常简单的触发器来测试它,代码如下:

DELIMITER ;
DROP TRIGGER IF EXISTS `triggerName`;
DELIMITER $$
CREATE TRIGGER `triggerName` AFTER UPDATE ON `test`
    FOR EACH ROW
        BEGIN
            SELECT * FROM `test_2` WHERE `id` = 1
        END $$
DELIMITER ;

【问题讨论】:

【参考方案1】:

触发器主体的最后一个 END 应该使用您声明的 DELIMITER,如下所示:END$$

BEGIN 和 END 中的每个语句都可以(必须)以 ; 结束,以不告诉 mysql 您的 TRIGGER 语句已结束。

所以以; 结束第7 行,并删除第8 行END$$ 之间的空格。

【讨论】:

【参考方案2】:

您在END 之后和SELECT 末尾缺少;

DELIMITER $$
CREATE TRIGGER `triggerName` AFTER UPDATE ON `test`
    FOR EACH ROW
        BEGIN
            SELECT * FROM `test_2` WHERE `id` = 1;
        END; $$
DELIMITER ;

【讨论】:

如果要存储选定的值,请检查此answer。 感谢您的提示,原来的触发器不是选择,它的插入/更新时间更长,条件更多,我确信触发器中的 SQL 代码可以正常工作,只是不确定为什么会这样在 'END' 抛出一个错误,谢谢你的帮助! 这是不正确的。我会写出正确答案。

以上是关于Phpmyadmin 在“END”附近创建触发器语法错误的主要内容,如果未能解决你的问题,请参考以下文章

phpmyAdmin 中的 MySQL 触发器错误

phpmyadmin 中的 MYSQL 触发器语法问题

空字符串无法解释的MySQL错误#1064创建更新触发器后?

MySQL 触发语法错误

EREQUEST 'END' 附近的语法不正确

无法在 PHPMYADMIN 上创建此 MYSQL 触发器