三个mysql触发器

ovfsdjhp  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(302)
delimiter //
create trigger logsupdate before update on users
for each row 
begin
  if new.pJailed <> old.pJailed then
    set new.jailtime = now();
     if new.pVIP <> old.pVIP then
    set new.TM2 = now();
         if new.pAdminLevel <> old.pAdminLevel then
    set new.TM3 = now();
  end if;
end;//
delimiter ;

为什么这个不行?我试图从前面的问题中得出一个答案,但在这里它给了我错误。
mysql错误

create trigger logsupdate before update on users
for each row 
begin
  if new.pJailed <> old.pJailed then
    set new.jailtime = now();
     if new.pVIP <> old.pVIP then
    set new.TM2 = now();
         if new.pAdminLevel <> old.pAdminLevel then
    set new.TM3 = now();
  end if;
end;
MySQL says: DOCUMENTATION

# 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 11
falq053o

falq053o1#

你错过了几个 end if; . 此外,在中不需要分号 end;// . 我还添加了一个 Drop Trigger If Exists 子句以避免错误,以防已存在同名的重复触发器。
以下是更正的触发器(基于op的评论):

delimiter //
DROP TRIGGER IF EXISTS logsupdate //
create trigger logsupdate before update on users
for each row 
begin

  if new.pJailed <> old.pJailed then
    set new.jailtime = now();
  end if;

  if new.pVIP <> old.pVIP then
    set new.TM2 = now();
  end if;

  if new.pAdminLevel <> old.pAdminLevel then
    set new.TM3 = now();
  end if;
end//
delimiter ;

相关问题