【问题标题】:SQL syntax error near '' at line 14第 14 行 '' 附近的 SQL 语法错误
【发布时间】:2013-08-11 09:45:07
【问题描述】:

我已经在 HeidiSQL IDE 中为 mysql trough IDE´s helper 创建了这个触发器,它工作得很好。如果我复制 IDE 生成的创建代码并尝试在 phpmyadmin 上运行它,我会收到一个 SQL 语法错误,我无法弄清楚如何修复它。谁能帮帮我?

CREATE TRIGGER `teste` AFTER UPDATE ON `ilmug_virtuemart_products` FOR EACH ROW BEGIN
   IF (NEW.origem_sync <> 0) THEN 
      INSERT INTO sincronizar (dataHora,
                               tipoMovimento,
                               entidade,
                               id,
                               version,
                               STATUS) 
                       VALUES (CURRENT_TIMESTAMP(),
                  'update',
                  'virtuemart_products',
                   NEW.virtuemart_product_id,
                   NEW.version,
                  'pendente');
   END IF;
END;

【问题讨论】:

    标签: mysql syntax triggers phpmyadmin heidisql


    【解决方案1】:

    您有一个 BEGIN 声明...但 END 不见了


    由于您编辑了您的问题,我对其进行了测试:http://sqlfiddle.com/#!2/0ebbf
    根据sqlfiddle,有no语法错误...

    【讨论】:

    • 这不是问题,我尝试了许多不同类型的语法。我的问题是查询在 IDE 上运行,但不在命令或 phpmyadmin 上运行。我已经更新了查询,请再次检查并告诉我您是否发现任何问题。
    • 即使没有语法错误,我仍然在 phpmyadmin 上收到此错误:#1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取正确的语法,以便在第 14 行的 '' 附近使用
    【解决方案2】:

    使用DELIMITER

    DELIMITER $$
    
    CREATE TRIGGER `teste` AFTER UPDATE ON `ilmug_virtuemart_products` FOR EACH ROW
    BEGIN
       IF (NEW.origem_sync <> 0) THEN 
          INSERT INTO sincronizar (dataHora,
                                   tipoMovimento,
                                   entidade,
                                   id,
                                   version,
                                   STATUS) 
                           VALUES (CURRENT_TIMESTAMP(),
                      'update',
                      'virtuemart_products',
                       NEW.virtuemart_product_id,
                       NEW.version,
                      'pendente');
       END IF;
    END$$
    
    DELIMITER ;
    

    【讨论】:

    • 那么也许您应该考虑将答案标记为已接受,以及您提出的其他问题的所有正确答案。
    猜你喜欢
    • 2021-06-03
    • 2023-02-13
    • 2017-09-28
    • 1970-01-01
    • 1970-01-01
    • 2016-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多