如何在触发器中声明变量

时间:2018-03-28 13:47:19

标签: mysql sql triggers syntax-error

创建触发器后,我收到以下错误:

  

您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第3行的''附近使用正确的语法

这是我的疑问:

CREATE TRIGGER reserved BEFORE INSERT ON Reserv
FOR EACH ROW BEGIN 
    DECLARE trip_id integer;
    DECLARE free integer;
    DECLARE count integer;

    set @free := (select place_free from Trips where id = trip_id);
    set @count := (select count from inserted);

    if @count <= @free
        begin

            update Trips set place_free = @free - @count where id = @trip_id;

        end
    ELSE
        BEGIN
            ROLLBACK;
            return;
        END
 END

1 个答案:

答案 0 :(得分:2)

我看到你正在使用RETURN语句。正如https://dev.mysql.com/doc/refman/5.7/en/stored-program-restrictions.html#stored-routines-trigger-restrictions所述:

  

触发器中不允许使用RETURN语句,该语句无法返回   一个值。要立即退出触发器,请使用LEAVE语句。

但是从我的观点来看,这是一个不同的主题,因为错误消息说明了第3行中的语法错误。也许你忘了将分隔符设置为与;不同的东西:

DELIMITER //
CREATE TRIGGER ...