简体   繁体   English

MySQL触发器语法错误

[英]MySQL Trigger Syntax Error

Running on MySQL 5.5.9 with InnoDB. 使用InnoDB在MySQL 5.5.9上运行。

I created the following trigger: 我创建了以下触发器:

CREATE TRIGGER TRIGGER_Products_Insert
AFTER INSERT ON Products

FOR EACH ROW
BEGIN
UPDATE Products
SET current = 0
WHERE   id = new.id
    AND current = 1
    AND autonumber <> new.autonumber
END;

MySQLWorkbench shows a syntax error on the last line, and executing this throws the following error MySQLWorkbench在最后一行显示语法错误,执行此操作会引发以下错误

Error Code: 1064. You have an error in your SQL syntax; 错误代码:1064。您的SQL语法有错误; check the manual that corresponds to your MySQL server version for the right syntax to use near 'END' at line 11 检查与MySQL服务器版本对应的手册,以便在第11行的“END”附近使用正确的语法

Where is my error? 我的错误在哪里?

http://dev.mysql.com/doc/refman/5.5/en/create-trigger.html http://dev.mysql.com/doc/refman/5.5/en/create-trigger.html

DELIMITER |

CREATE TRIGGER TRIGGER_Products_Insert AFTER INSERT ON Products
    FOR EACH ROW BEGIN
        UPDATE Products
        SET current = 0
        WHERE   id = new.id
            AND current = 1
            AND autonumber <> new.autonumber;
    END;
|

DELIMITER ;

You are missing a ; 你错过了; before your END keyword: 在您的END关键字之前:

CREATE TRIGGER TRIGGER_Products_Insert
AFTER INSERT ON Products

FOR EACH ROW
BEGIN
UPDATE Products
SET current = 0
WHERE   id = new.id
    AND current = 1
    AND autonumber <> new.autonumber;
END;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM