创建触发器后,我收到以下错误:
您的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
答案 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 ...