【问题标题】:PHPMyAdmin Update Trigger ErrorPHPMyAdmin 更新触发错误
【发布时间】: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 行

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

【问题讨论】:

    标签: mysql triggers phpmyadmin syntax-error


    【解决方案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;
    

    【讨论】:

    • 我真傻。感谢您的建议,成功了!
    猜你喜欢
    • 1970-01-01
    • 2015-08-16
    • 2014-07-21
    • 1970-01-01
    • 2011-07-10
    • 2011-09-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多