我在服务器上已经使用了一个数据库(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关于我遇到的另一个问题,这个问题很正常。虽然这是在本地开发数据库中,因为它位于服务器上。
如果有人能够发现我做错了什么或知道要检查什么,我们将不胜感激。
我以为我指出服务器我做的改变不是生产者。
答案 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
词汇。