[英]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.