簡體   English   中英

如何在觸發器中聲明變量

[英]How to declare variable in triggers

創建觸發器后,出現以下錯誤:

您的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

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

觸發器不允許返回值,觸發器不能使用RETURN語句。 要立即退出觸發器,請使用LEAVE語句。

但是從我的角度來看,這是一個不同的主題,因為錯誤消息說的是第3行中的語法錯誤。也許您忘記了將分隔符設置為不同於;

DELIMITER //
CREATE TRIGGER ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM