确定有些奇怪的事情发生了,我无法理解。我正在创建一些触发器,但在尝试在实时DB上创建它们时会出现奇怪的错误。示例查询是这样的:
delimiter |
CREATE TRIGGER debug_upd_before BEFORE UPDATE ON properties_availability
FOR EACH ROW BEGIN
INSERT INTO debug_upd_before SET timestamp = NOW(), avID = OLD.avID, avPropertyID = OLD.avPropertyID,
avAvailableFrom = OLD.avAvailableFrom, avAvailableTo = OLD.avAvailableTo, avPrice = OLD.avPrice,
avIsAvailable = OLD.avIsAvailable;
END|
...
执行精细的localy。我正在使用phpmyadmin,因为我没有任何其他访问在线数据库。我知道我没有完整的权限,并认为它可能与此有关,但我得到的错误是:
您的SQL语法有错误; 检查对应的手册 您的MySQL服务器版本 正确的语法在'delimiter |
附近使用
不是“你没有权限这样做”或类似的东西。当我尝试执行更简单的操作时会发生同样的情况:
delimiter |
select 1|
select 2
我得到的错误是相同的,我不能设置分隔符,默认不适合我,因为我必须在触发器内的查询后使用。我尝试了其他符号作为分隔符,但结果是一样的。关于问题是什么以及如何避免它的任何想法?一些触发器执行多个查询,如果这会产生影响......
谢谢!
答案 0 :(得分:1)
试试这句话(没有分隔符) -
CREATE TRIGGER debug_upd_before BEFORE UPDATE ON properties_availability
FOR EACH ROW
INSERT INTO debug_upd_before SET
timestamp = now(),
avID = OLD.avID,
avPropertyID = OLD.avPropertyID,
avAvailableFrom = OLD.avAvailableFrom,
avAvailableTo = OLD.avAvailableTo,
avPrice = OLD.avPrice,
avIsAvailable = OLD.avIsAvailable;
答案 1 :(得分:0)
问题是|
是按位还是。
所以你使用保留符号作为分隔符。
改为使用$$
。