Триггеры в MySQL

Триггер — это хранимая процедура, которая исполняется при наступлении определенного события. События, к которым можно привязать триггеры — INSERT, UPDATE и DELETE. Триггер исполняется до BEFORE или AFTER после наступления события.

Примеры создания триггеров на mysql.com: для версии 5,5 и 5,7

Статья об использовании триггеров в MySQL.

Синтаксис создания триггера

Где:

trigger_name — название триггера
trigger_time — время срабатывания триггера. BEFORE или AFTER.
trigger_event — событие:
insert — событие срабатывает при вызове операторов insert, data load, replace
update — событие срабатывает при вызове оператора update
delete — событие срабатывает при вызове операторов delete, replace.
tbl_name — название таблицы
trigger_stmt выражение, которое выполняется при активации триггера

Операторы DROP TABLE и TRUNCATE не активируют выполнение триггера.

Пример

Триггер для данной таблицы:

Оператор DELIMITER определяет место начала и конца процедуры. Для DELIMITER необходимо обязательно выбирать разделитель, который не будет использоваться в процедуре. Он может состоять из нескольких символов. После DELIMITER следует вернуть в исходное состояние.

На столбцы изменяемой таблицы (к которой привязан триггер) можно ссылаться с помощью псевдонимов NEW и OLD. OLD.country_id указывает на столбец с именем country_id до изменения данных. NEW.country_id относится к колонке с обновлёнными данными.

Удалить триггер

Просмотр существующих в БД триггеров:

 

Особенности использования триггеров

ВMySQL 5  триггеры могут создаваться только пользователем с привилегией SUPER;
Если запрос затрагивает изменение N записей, то и триггер будет вызываться N раз.
После удаления таблицы с триггерами, СУБД автоматически удаляет и все привязанные к ней триггеры.