Триггер в MySQL — поименованный объект БД, который ассоциирован с таблицей и активируемый при наступлении определенного события, события связанного с этой таблицей.
Такими событиями могут быть:
- INSERT — при операциях вставки или аналогичных ей выражениях (INSERT, LOAD DATA, и REPLACE)
- UPDATE — когда сущность (строка) модифицирована
- DELETE — когда запись удаляется (запросы, содержащие выражения DELETE и/или REPLACE)
Кроме того, для каждого события есть два варианта:
BEFORE — выполняется до исполнения команды. Допустим, при BEFORE INSERT могут быть изменены данные перед вставкой их в таблицу или рассчитаны дополнительные поля для вставки.
AFTER — данное событие вызывается, после завершения исполнения команды. Как правило, это событие используется для обновления статистических данных или вставки данных в другие таблицы.
Таким образом получаем 6 возможных ситуаций исполнения триггеров:
- BEFORE INSERT
- AFTER INSERT
- BEFORE UPDATE
- AFTER UPDATE
- BEFORE DELETE
- AFTER DELETE
Синтаксис создания триггера
CREATE [DEFINER = { имя_ пользователя | CURRENT_USER }] TRIGGER имя_триггера время_триггера событие_срабатывания_триггера ON имя_таблицы FOR EACH ROW BEGIN Выражения которые выполняются при срабатывании триггера END;
Пример:
CREATE dbuser@localhost TRIGGER beforeUpdTrigger BEFORE UPDATE ON dbname FOR EACH ROW BEGIN Выражения которые выполняются при срабатывании триггера END;