Отдел продаж: работает
Техническая поддержка: работает
Триггеры в MySQL (от англ. Trigger) - это специальная хранимая процедура языка SQL, которая исполняется при наступлении определенного события (например, вставка, обновление, удаление записи). Она не может вызываться вручную. Поддержка этой процедуры стала доступна в MySQL 5.0.2, а так же во всех версиях MariaDB.
Процедура хранится в СУБД MySQL и ее вызов никак не зависит от используемого языка программирования или приложения.
Помимо того, что использование триггеров не зависит от приложения и используемого языка программирования, имеется еще ряд преимуществ:
Все производимые операции считаются транзакциями, поэтому в случае ошибки вы легко можете откатить те или иные изменения.
Синтаксис созадния триггера довольно прост:
CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_stmt
Где:
Стоит обратить внимание, что триггеры могут быть привязаны не к таблице, а, непосредственно, к представлению (VIEW). В таком случае с их помощью реализуется механизм "обновляемого представления".
Давайте рассмотрим следующий пример. У нас есть 2 таблицы test и log. Создадим триггер, который будет записывать событие в таблицу log при добавлении записи в таблицу test.
Создадим тестовые таблицы:
/*Таблица test, за которой мы будем следить*/
CREATE TABLE `test` ( `id` INT( 11 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, `content` TEXT NOT NULL );
/*Таблица log, куда будем записывать информацию*/
CREATE TABLE `log` ( `id` INT( 11 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, `msg` VARCHAR( 255 ) NOT NULL, `time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, `row_id` INT( 11 ) NOT NULL );
/*Создание триггера*/
DELIMITER | CREATE TRIGGER `update_test` AFTER INSERT ON `test` FOR EACH ROW BEGIN INSERT INTO log Set msg = 'insert', row_id = NEW.id; END;
Таким образом, мы создали триггер update_test, который будет срабатывать при добавлении записи в таблицу test. И, теперь, в таблице log так же появится такая же запись. А в строке row_id будет храниться id записи.
Здесь, оператор DELIMITER используется для определения знака начала/окончания процедуры. Он может быть любым. Главное, чтобы этот знак не использовался в самое процедуре.
Чтобы посмотреть все созданные триггеры, используйте команду:
SHOW TRIGGERS;
А чтобы удалить триггер, используйте команду DROP TRIGGER. В нашем примере, чтобы удалить созданный тригер:
DROP TRIGGER `update_test`;
На что стоит обратить внимание при использовании триггеров:
Когда Ваш проект уже вырастит до серьезных размеров, Вам потребуется аренда сервера в Дата-Центре. В RigWEB к каждому выделенному серверу предоставляется бесплатное администрирование. Мы поможем Вам настроить триггеры, если необходимо.
Вам ответят в течение 15 минут
Популярные статьи раздела «Базы данных»
Спасибо, что выбрали RigWEB!
Этот веб-сайт использует файлы cookies. Если Вы продолжите просматривать сайт, Вы соглашаетесь и принимаете нашу политику конфиденциальности.