#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:
У меня есть пара замечаний о вашем коде:
- в случае, если new.sage имеет значение null, оно все равно будет null после выполнения триггера
- Это не очень хорошая практика, поэтому сохраните возраст в базе данных, он со временем изменился. Предпочитаю сохранять дату рождения или год рождения, потому что это константа.
В любом случае, если вам интересен способ запуска, вы можете использовать следующий:
DELIMITER $
CREATE TRIGGER trigofstu BEFORE INSERT ON test
FOR EACH ROW
BEGIN
SET new.sage = GREATEST(18, COALESCE(new.sage, 0)) ;
END;
$
DELIMITER ;