Ошибка выдачи MySQL “Ожидание неполного оператора»; при попытке создать триггер

#mysql #sql #triggers

#mysql #sql #триггеры

Вопрос:

Я хочу создать такой триггер, как этот:

 create trigger trigofstu before insert on student
for each row
begin
    if new.sage <18 then
        set new.sage = 18 ;
    end if;
end;
 

но я получил ошибку, подобную этой:

Код ошибки: 1064. У вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом с » в строке 5 0.016 сек

введите описание изображения здесь

кстати, я использовал MySQLWorkbench, спасибо!!!

Комментарии:

1. Попробуйте использовать DELIMITER $$ перед create trigger утверждением.

Ответ №1:

У меня есть пара замечаний о вашем коде:

  1. в случае, если new.sage имеет значение null, оно все равно будет null после выполнения триггера
  2. Это не очень хорошая практика, поэтому сохраните возраст в базе данных, он со временем изменился. Предпочитаю сохранять дату рождения или год рождения, потому что это константа.

В любом случае, если вам интересен способ запуска, вы можете использовать следующий:

 DELIMITER $

CREATE TRIGGER trigofstu BEFORE INSERT ON test
FOR EACH ROW
BEGIN
    SET new.sage = GREATEST(18, COALESCE(new.sage, 0)) ;
END;
$

DELIMITER ;