gpt4 book ai didi

MySQL 触发器 #1064 语法错误

转载 作者:行者123 更新时间:2023-11-29 11:50:51 25 4
gpt4 key购买 nike

我的服务器(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关于我遇到的一个单独的问题,效果很好。尽管那是在本地开发数据库上,而这是在服务器上。

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

我想指出我进行此更改的服务器不是生产服务器。

最佳答案

这似乎只是缺少 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 措辞。

关于MySQL 触发器 #1064 语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34083804/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com