Три триггера mysql - PullRequest
       4

Три триггера mysql

0 голосов
/ 19 сентября 2018
       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 ERROR

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

1 Ответ

0 голосов
/ 19 сентября 2018

Вы пропустили пару 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 ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...