【问题标题】:Phpmyadmin create trigger syntax error near 'END'Phpmyadmin 在“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 ;

【问题讨论】:

    标签: mysql database triggers phpmyadmin


    【解决方案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' 抛出一个错误,谢谢你的帮助!
      • 这是不正确的。我会写出正确答案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多