SQL-триггер — это событие, которое запускает ряд других событий, которые происходят, когда пользователь взаимодействует с определённой таблицей. Этот конкретный оператор SQL помогает проверять данные формы или применять правила.
Триггер выполняется до или после следующих событий:
- ВСТАВИТЬ — при вставке новой строки.
- ОБНОВЛЕНИЕ — при обновлении существующей строки.
- УДАЛИТЬ — при удалении строки.
Какой триггер сработает и что произойдёт, зависит от того, как это написано. Начнём с создания оператора create:
CREATE TRIGGER <trigger_name> [BEFORE|AFTER] [INSERT|UPDATE|DELETE]
ON <table_name> [FOR EACH ROW|FOR EACH STATEMENT]
BEGIN
<trigger_logic>
END;
Между любым набором <> замените его собственными именами или логикой. Внутри [] выберите один вариант из имеющихся.
ДО / ПОСЛЕ и ВСТАВИТЬ | ОБНОВЛЕНИЕ | УДАЛИТЬ: выберите по одному из каждого списка. BEFORE / AFTER определяет, когда сработает триггер. INSERT / UPDATE / DELETE — это событие, которое запускает триггер.
ДЛЯ КАЖДОЙ СТРОКИ | ДЛЯ КАЖДОГО ЗАЯВЛЕНИЯ: разница между двумя вариантами здесь заключается в том, сколько раз запускается триггер. FOR EACH ROW запускается для каждой затронутой строки в таблице. FOR EACH STATEMENT всегда гарантированно запускается хотя бы один раз, независимо от того, обновлены ли какие-либо строки.
Подобно базам данных или таблицам, есть опция DROP TRIGGER:
DROP TRIGGER [IF EXISTS] trigger_name;
IF EXISTS — необязательная часть синтаксиса. Если эта часть включена в блок операторов, она предотвращает ошибку «триггер не существует». Удалённая таблица также автоматически удаляет все связанные триггеры.
Знайте, что триггер SQL требует трёх основных вещей: оператора create, который даёт триггеру его имя и когда событие происходит, как часто происходит триггер, а затем блок BEGIN / END, излагающий логику для фактического триггера.
Продолжайте практиковаться, если сначала вы этого не поймёте — поскольку это сложная концепция в SQL, она, вероятно, потребует больше повторений, чем другие темы и функции в SQL.