DOC.PROTOTYPES.RU

Главная > Базы данных > MySQL > Триггеры >

Краткая сводка по триггерам в MySQL 5.1

Что это такое триггер?

Триггер в MySQL - это процедура привязанная к определенной таблице и выполняемая во время определенных событий таблицы:

Синтаксис триггера

SQL код (1) CREATE DEFINER = CURRENT_USER TRIGGER `[ имя триггера ]` [ BEFORE | AFTER ] [ INSERT | UPDATE | DELETE ] ON `[ имя таблицы ]` FOR EACH ROW BEGIN [ Тело триггера ] END;

Собственно, и все, ничего лишнего. Переменные не передаем, обратно ничего не возвращаем, кстати да, RETURN нет по определению, зато есть NEW и OLD, правда, не всегда

Подсмотреть созданный триггер можно следующим запросом:

SQL код (2) SHOW TRIGGERS [ { FROM | IN } [database] ] [ LIKE 'pattern' | WHERE { условие } ];

Как ни странно LIKE сам по себе, а не в условии WHERE, впрочем, LIKE работает только для поиска соответсвия по именам таблиц в которых есть триггер. Уловие WHERE же позволяет искать практически по любым параметрам, а параметров много:

Удаление триггера:

SQL код (3) DROP TRIGGER [ IF EXISTS ] [schema_name.]trigger_name

Обновление триггера ведется через DROP + CREATE.

До или после?

Теперь самое интересное, что и когда у нас есть во время исполнения триггера, а так же какие возможности или "не возможности" это дает:

Грабли

По моему глубокому убеждению, триггеры в MySQL очень сырые, грабли попадаются под ногами на каждом шагу. Я буду периодически обновлять список, и комментированть его. Итак:

Резюме: на данном этапе использовать треггеры в MySQL желательно только для тривиальных задач, к более сложным задачам система не готова, слишком много ошибок и нестыковок.

Сергей Томулевич aka Phoinix (02.09.2009 г.)

Еще статьи по теме:

Valid HTML 4.01 Transitional
Copyright © 2011 Сергей Томулевич