好吧,发生了一些奇怪的事情,我无法弄清楚。我正在创建一些触发器,但是当尝试在实时数据库上创建它们时出现奇怪的错误。示例查询如下:
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|
...
它在本地执行得很好。我正在使用 phpmyadmin,因为我没有任何其他访问在线数据库的权限。我知道我没有完整的权限,并认为这可能与此有关,但我得到的错误是:
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 'delimiter |
不是“您没有权限这样做”或类似的内容。当我尝试执行更简单的操作时,也会发生同样的情况:
delimiter |
select 1|
select 2
我得到的错误是相同的,我无法设置分隔符,并且默认值对我不起作用,因为我必须在触发器内的查询之后使用。我尝试了其他符号作为分隔符,但结果是一样的。关于问题是什么以及如何避免它有什么想法吗?一些触发器执行多个查询,如果这有影响的话......
谢谢!
最佳答案
尝试这个语句(不带分隔符)-
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;
关于mysql - 创建触发器时出现分隔符奇怪错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6303944/