Ошибка синтаксиса триггера MySQL - PullRequest
0 голосов
/ 10 февраля 2012

Запуск на MySQL 5.5.9 с InnoDB.

Я создал следующий триггер:

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 показывает синтаксическую ошибку в последней строке, и при выполнении этого выдает следующую ошибку

Код ошибки: 1064. У вас ошибка в синтаксисе SQL;проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с 'END' в строке 11

Где моя ошибка?

Ответы [ 2 ]

2 голосов
/ 10 февраля 2012

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 ;
0 голосов
/ 10 февраля 2012

Вам не хватает ; перед ключевым словом 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;
...