更新前的 MySQL 使用 PhpMyAdmin 触发插入语法错误

Posted

技术标签:

【中文标题】更新前的 MySQL 使用 PhpMyAdmin 触发插入语法错误【英文标题】:MySQL before update trigger an insert syntax error using PhpMyAdmin 【发布时间】:2015-08-16 19:24:25 【问题描述】:
 CREATE TRIGGER question_preserver BEFORE UPDATE ON bank
 FOR EACH ROW
 BEGIN
 IF TRIM(NEW.question) != TRIM(OLD.question) THEN
 INSERT INTO bank_question_history (id,old_question) VALUES (OLD.id,OLD.question)$$
 END IF$$
 END$$

我使用 phpMyAdmin 的 SQL 窗口将该查询插入到 mysql 中,使用 $$ 的分隔符。我收到一个错误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 '' at line 5

我确定这很明显,我只是想念它,但无论我尝试什么,我都无法让它发挥作用。该错误根本没有帮助,根据我的研究,我正在这样做,就像我发现的 4-5 个示例一样。

任何帮助将不胜感激,谢谢!

【问题讨论】:

【参考方案1】:

想想我问完就知道了。

 CREATE TRIGGER question_preserver BEFORE UPDATE ON bank
 FOR EACH ROW
 BEGIN
 IF TRIM(NEW.question) != TRIM(OLD.question) THEN
 INSERT INTO bank_question_history (id,old_question) VALUES (OLD.`id`,OLD.`question`);
 END IF;
 END$$

您必须使用 ; 来中断每个语句/命令,并使用 delim $$ 来结束整个触发器。

【讨论】:

您自己找出答案做得很好。是的,分隔符用于触发器语句,而普通分隔符应用于触发器中的 SQL

以上是关于更新前的 MySQL 使用 PhpMyAdmin 触发插入语法错误的主要内容,如果未能解决你的问题,请参考以下文章

如何让 PHPMyAdmin 显示 MySQL 警告?

如何使用phpMyAdmin创建独立数据库用户

phpmyadmin更新查询使用3个表给出错误

我有一个较旧的 .sql 文件(从 5.0.45 导出)我正在尝试通过 phpMyAdmin 导入更新版本的 MySQL。接收错误

无法在 PHPMYADMIN 上创建此 MYSQL 触发器

使用命令行导入 mysql 数据库