好吧,有些奇怪的事情正在发生,我无法弄清楚。我正在创建一些触发器,但是尝试在实时数据库上创建触发器时会遇到奇怪的错误。示例查询是这样的:
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,因为我没有其他访问在线数据库的权限。我知道我没有完整的权限,并认为这可能与此有关,但是我得到的错误是:
您的SQL语法有误。
检查对应的手册
您的MySQL服务器版本
在'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;