MySQL触发#1064语法错误

时间:2015-12-04 08:23:03

标签: mysql triggers

我在服务器上已经使用了一个数据库(MySQL Community Server 5.5.40-cll)&我试图为它添加触发器,但我一直收到以下错误。

#1064 - 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 '' at line 3 

我尝试设置触发器以确保end_date不在start_date之前,这是我目前正在使用的内容。

CREATE TRIGGER `Meets insert` BEFORE INSERT ON `meets`
  FOR EACH ROW 
    IF DATEDIFF(NEW.end_date, NEW.start_date) < 0 THEN
      signal sqlstate '45000' set message_text = 'start_date must be before end_date';
    END IF;

我已经查看了5.5的MySQL文档,看来我所做的一切都得到了这个版本的支持,并且我正确使用它。

我确定if语句是正确的,因为我之前提出了另一个类似的问题here on Stack Overflow关于我遇到的另一个问题,这个问题很正常。虽然这是在本地开发数据库中,因为它位于服务器上。

如果有人能够发现我做错了什么或知道要检查什么,我们将不胜感激。

我以为我指出服务器我做的改变不是生产者。

1 个答案:

答案 0 :(得分:1)

似乎只缺少DELIMTER包装器。尝试

delimiter $$
CREATE TRIGGER `Meets insert` BEFORE INSERT ON `meets`
  FOR EACH ROW 
    IF DATEDIFF(NEW.end_date, NEW.start_date) < 0 THEN
      signal sqlstate '45000' set message_text = 'start_date must be before end_date';
    END IF;
$$
delimiter ;

超过错误1064

请参阅This Post底部的DELIMITER词汇。