#mysql #triggers
#mysql #триггеры
Вопрос:
Я пытаюсь создать триггер в Database Workbench (Lite, для MySQL) с помощью этого:
delimiter //
CREATE TRIGGER employeesTableInsert AFTER INSERT ON EMPLOYEES FOR EACH ROW
SET NEW.CREATED = CURRENT_TIMESTAMP; END IF;//
Однако, когда я пытаюсь создать новый триггер, я получаю сообщение об ошибке:
Это кажется странным; Я смотрю на вкладку DDL в Database Workbench, и там есть это:
Почему он удваивает и искажает мой код триггера в DDL (только для чтения)?
Как показано в начале, мой код триггера содержит только то, что показано выше:
Так проблема в моем коде, или это потому, что вкладка DDL запутана? Или мой код ПРИВОДИТ к путанице во вкладке DDL или что?
Ответ №1:
Если вы хотите обновить только значение, вам нужно следующее.
вы не можете использовать SET без BEGIN и END, это не запрос.
Мне интересно, почему в вашем коде есть END IF
Редактировать я также изменил ваш ТРИГГЕР на BEFORE INSERT , потому что там вы можете изменить значения НОВОГО столбца (см. Комментарий Билла Карвина)
И на самом деле вам не нужен триггер, см. Руководство
DELIMITER //
CREATE TRIGGER employeesTableInsert BEFORE INSERT ON EMPLOYEES
FOR EACH ROW
BEGIN
SET NEW.CREATED = CURRENT_TIMESTAMP;
END//
Комментарии:
1. Также вы не можете изменить какой-либо столбец (например,
NEW.created
) вAFTER
триггере.