CREATE
[DEFINER = { user | CURRENT_USER }]
TRIGGER trigger_name trigger_time trigger_event
ON tbl_name FOR EACH ROW trigger_body
Где,
trigger_name —название триггера;
trigger_time — время срабатывания триггера.
BEFORE — перед событием.
AFTER — после события;
trigger_event — событие:
insert — событие возбуждается операторами insert, data load, replace;
update — событие возбуждается оператором update;
delete — событие возбуждается операторами delete, replace.
tbl_name — название таблицы;
trigger_body — выражение, которое выполняется при активации триггера.
На столбцы таблицы, к которой привязан триггер можно ссылаться с помощью псевдонимов OLD и NEW.
OLD.col_name указывает на столбец с именем col_name до изменения или удаления данных. NEW.col_name относится к колонке новой строке после вставки или существующей - сразу после её обновления.
После оператора и имени триггера необходимо указать в каком случае будет срабатывать триггер. Возможно 6 вариантов:
BEFORE INSERT
BEFORE UPDATE
BEFORE DELETE
AFTER INSERT
AFTER UPDATE
AFTER DELETE
Для удаления триггера необходимо выполнить запрос:
DROP TRIGGER trigger_name;
Для просмотра триггеров в базе данных используется оператор:
SHOW TRIGGERS;
Триггеры имеют несколько важных особенностей использования:
триггеры в MySQL 5 могут создаваться только пользователем с привилегией SUPER;
при использовании запроса, затрагивающего N - записей, триггер будет запускаться N - раз;
после удаления таблицы, СУБД MySQL автоматически удаляет привязанные к ней триггеры.
Пример выполнения задания для предметной области «Запись на прием»:
Чтобы создать триггер AFTER INSERT создадим две таблицы: test и log. С помощью этих таблиц можно увидеть ведение записей изенений в таблицах или же лог файлов.
Рис. 14.2.1. Создание таблицы test и log.
Создадим триггер update_test предварительно указав delimiter, где будут зарисываться изменения в таблице test. Соответственно это будет сообщение insert и id новой записи.
Do'stlaringiz bilan baham: |