В этом учебном пособии вы узнаете, как создать триггер AFTER INSERT (после вставки) в MySQL с синтаксисом и примерами.
Описание
Триггер AFTER INSERT исполняется средствами MySQL после выполнения операции INSERT.
Синтаксис
Синтаксис создания ТРИГГЕРА AFTER INSERT в MySQL:
CREATE TRIGGER trigger_name
AFTER INSERT
ON table_name FOR EACH ROW
AFTER INSERT
ON table_name FOR EACH ROW
BEGIN
-- variable declarations
-- trigger code
END;
Параметры или аргументы
trigger_name - наименование создаваемого триггера.
AFTER INSERT - указывает, что триггер срабатывает после выполнения операции INSERT.
table_name - наименование таблицы, для которой создается триггер.
Ограничения
- Вы не можете создавать триггер AFTER в представлениях (view).
- Вы не можете обновить NEW (новые) значения.
- Вы не можете обновить OLD (старые) значения.
Примечание
- Смотрите также: как создать триггеры AFTER DELETE, AFTER UPDATE, BEFORE DELETE, BEFORE INSERT, и BEFORE UPDATE.
- Смотрите также: как удалить триггер.
Пример
Рассмотрим пример, как создать триггер AFTER INSERT, используя инструкцию CREATE TRIGGER в MySQL.
Если вы создали таблицу следующей структуры:
1 2 3 4 5 6 7 8 9 |
CREATE TABLE contacts ( contact_id INT(11) NOT NULL AUTO_INCREMENT, last_name VARCHAR(30) NOT NULL, first_name VARCHAR(25), birthday DATE, created_date DATE, created_by VARCHAR(30), CONSTRAINT contacts_pk PRIMARY KEY (contact_id) ); |
Тогда мы создадим триггер AFTER INSERT следующим образом:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
DELIMITER // CREATE TRIGGER contacts_after_insert AFTER INSERT ON contacts FOR EACH ROW BEGIN DECLARE vUser varchar(50); -- Найти персону username, осуществляющую INSERT в таблицу SELECT USER() INTO vUser; -- вставка записи в таблицу contacts_audit INSERT INTO contacts_audit ( contact_id, deleted_date, deleted_by) VALUES ( NEW.contact_id, SYSDATE(), vUser ); END; // DELIMITER ; |