我有一个存储过程,在我的本地PC语法上可以接受,我有MySQL工作台5.2.44,我认为我的本地版本的MySQL是5.5.29由文件夹名称判断。下面是代码,我已经减少到最低限度为了说明mysql存储过程语法不一致
DELIMITER $$
CREATE PROCEDURE `usp_insert_booking_test_2`(
IN p_dtmTimeSlot DATETIME
)
BEGIN
INSERT INTO tblBookings (dtmTimeSlot)
SELECT p_dtmTimeSlot
FROM tblBookings
WHERE NOT EXISTS (SELECT * FROM tblBookings WHERE dtmTimeSlot = p_dtmTimeSlot) LIMIT 1;
END$$
正如你所看到的,我想确保我不会在同一个时间段创建两个预订。是的,我在表上也有一个约束来做到这一点。腰带&牙套。当我尝试在远程主机(运行MySQL版本5.1.68-cll)上添加此过程时,它说
#1064 - 您的SQL语法错误;检查与您的MySQL服务器版本对应的手册,以便在第12行“'附近使用正确的语法。
第12行是WHERE NOT EXISTS行。我试图删除限制1,这没有什么区别。有没有办法编写查询,以便MySQL 5.1能接受它?
的最后一行应该是'END $$'(太空任务)而行的最后一个行后丢失: 'DELIMITER;' – Kovge 2013-04-18 07:44:07
的空间END'后'失踪 同样的问题:HTTP:/ /stackoverflow.com/questions/1102109/mysql-delimiter-syntax-errors – Kovge 2013-04-18 07:45:30