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”附近创建触发器语法错误的主要内容,如果未能解决你的问题,请参考以下文章