@amagon

Как правильно написать триггер?

Хочу написать триггер который бы при изменении определённого поля в одной таблицы писал бы об этом изменении в другую таблицу, своего рода лог изменения но не всей таблицы а только одного его поля.

Например есть таблица tutorials_tbl и три поля в ней id-номер записи, fio-фамилия пользователя и test-поле при изменении которого должен срабатывать триггер и переносить всю запись во вторую таблицу tutorials_tbl_history по сути копию первой таблицы с точно такими же полями.

получилось что то вроде этого, но mysql жалуется на синтаксис, если есть знатоки триггеров подскажите как исправить?

DROP TRIGGER IF EXISTS history_trigger ;
CREATE TRIGGER history_trigger
BEFORE UPDATE ON  tutorials_tbl
    FOR EACH ROW
    BEGIN
        IF OLD.tutorial_test != NEW.tutorial_test
        THEN
                INSERT INTO tutorials_tbl_history
                    (
                        tutorial_id,
                        tutorial_test ,
                        tutorial_fio        
                    )
                    VALUES
                    (  
                        NEW.tutorial_id,
                        NEW.tutorial_test ,                      
                        NEW.tutorial_fio
                    );
        END IF;
        
        
     
        
         END;
  • Вопрос задан
  • 286 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Перед созданием триггера:
DELIMITER $$
После создания:
$$
DELIMITER ;

Иначе точки с запятыми внутри команды CREATE TRIGGER рассматриваются как её завершение.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы