【发布时间】:2022-01-21 03:14:28
【问题描述】:
CREATE TRIGGER `db_name`.`trigger_name` BEFORE DELETE ON `db_name`.`table1_name`
FOR EACH ROW
BEGIN
INSERT INTO `db_name`.`table2_name`(table2_id,`comment`,record_created_date)
VALUES (OLD.id, OLD.`comment`, NOW());
END
语法错误发生在“OLD.comment”,因为 comment 是 MySql 中的保留字并且在 OLD 之后,即使使用反引号(“`”),上面的查询也不起作用.
当然,最简单的解决方案是更改列名。但是,就我而言,这不是一个选择。 如果您知道正确的语法,请提供帮助。谢谢。
【问题讨论】:
-
我认为这将是
(table2_id, `comment`, record_created_date)上插入列列表中的comment引用...而不是OLD引用? -
不,不是。至少,HeidiSQL 不认为那里有语法错误。
-
您是如何使用反引号尝试 OLD 引用的?
-
如果 OLD 可以用其他东西代替,它可能会起作用。就我而言,OLD.comment 包含两个保留关键字。我认为 OLD 是这里的问题。
-
我尝试了所有的组合——在 OLD 周围加上反引号,在评论周围,在两者周围......
标签: mysql triggers keyword reserved