好吧,有些奇怪的事情正在发生,我无法弄清楚。我正在创建一些触发器,但是尝试在实时数据库上创建触发器时会遇到奇怪的错误。示例查询是这样的:

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;

10-05 21:02
查看更多