mysql - 创建触发器时出现分隔符奇怪错误

标签 mysql triggers delimiter

好吧,发生了一些奇怪的事情,我无法弄清楚。我正在创建一些触发器,但是当尝试在实时数据库上创建它们时出现奇怪的错误。示例查询如下:

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/

相关文章:

php - MySql 登录查询不起作用

MySQL 行编号没有得到想要的结果

mysql - 每次插入后更新一列

mysql - 从两个表中触发乘法

php - mysql 在更新时触发问题

python - 正则表达式 (Python) - 删除以分隔符开头的行并保留其他分隔符

javascript - 在 Javascript 中使用内部和外部分隔符拆分字符串

excel - CSV 行尾

php - Drupal 7 使用 If 条件 mysql 数据库选择查询

mysql - 优化 MySQL 中依赖子查询的索引