mysql - 如何在触发器中声明变量

标签 mysql sql triggers syntax-error

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

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 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

最佳答案

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

The RETURN statement is not permitted in triggers, which cannot return a value. To exit a trigger immediately, use the LEAVE statement.

但从我的角度来看,这是一个不同的主题,因为错误消息提到了第 3 行中的语法错误。也许您忘记将分隔符设置为与 ; 不同的内容:

DELIMITER //
CREATE TRIGGER ...

关于mysql - 如何在触发器中声明变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49536303/

相关文章:

mysql - 如何创建一个迭代表并采用多个参数的 MySQL 条件函数

sql - 计数和行号

php - 检查数据库中是否存在用户名

java - 我如何动态修改 Java 中的 SQL 查询?

mysql - 我将如何查询用户播放的前三首歌曲?

sql - 触发器中的SQL ORACLE错误

sql - MySQL 触发器只针对某个 mysql 用户

mysql - 如何获取mysql中所有值都相同的行

sql - play20 ebean 生成的 sql 在 postgresql 上抛出语法错误

mysql - 插入 Mysql 时求和触发器