PHPMyAdmin 更新触发错误

Posted

技术标签:

【中文标题】PHPMyAdmin 更新触发错误【英文标题】:PHPMyAdmin Update Trigger Error 【发布时间】:2014-08-22 12:21:14 【问题描述】:

我试图通过 phpMyAdmin 触发器添加触发器工具向我的数据库中的表添加触发器。

我在同一个数据库中有两个表:table_A 和 table_B。 我正在检查从触发器返回的更新值是否等于 1。如果是,我想更新 table_B 中的值。这是我的代码:

SELECT var_a FROM INSERTED
IF var_a = 1 THEN 
    UPDATE table_B
    SET table_B.someVal = table_B.someVal + 1;
END IF;

错误:

您的 SQL 语法有错误;检查与您的 mysql 服务器版本相对应的手册,以获得在 'IF var_a = 1 THEN 附近使用的正确语法 更新表_B SET table_B.someVal = table_B.someVal + 1; E' 在第 2 行

感谢您的帮助。这是语法错误吗?

【问题讨论】:

【参考方案1】:

是的,这是一个语法错误。请注意,MySQL 不使用特殊的 INSERTED 表(对于 SQL Server 来说是特殊的。)

即使您有一个名为INSERTED 的表,这仍然不是有效的触发器 MySQL 语法;至少您需要以分号结束 SELECT 语句。但是不允许触发器返回结果集,您需要执行 SELECT ... INTO,或者使用游标。

使用“NEW”和“OLD”关键字来限定对正在更新的行中列的引用。

要检查分配给var_a 列的值,请参考NEW.var_a

例如:

  IF NEW.var_a = 1 THEN
    UPDATE table_B
       SET table_B.someCol = tableB.someCol + 1;
  END IF;

【讨论】:

我真傻。感谢您的建议,成功了!

以上是关于PHPMyAdmin 更新触发错误的主要内容,如果未能解决你的问题,请参考以下文章

无法登录到 phpmyadmin 并且没有显示错误

phpmyadmin 在更改任何值时更改日期

TRIGGER 语法错误 mysql 说 #1303 - 无法从另一个存储的例程中创建触发器 - phpmyadmin

Phpmyadmin 中的更新触发器之前如何获取更新的值

MySQL 访问被拒绝 #1045 [重复]

本地主机 - 无法连接