Более 600 любимых клиентов

Отдел продаж: работает

Техническая поддержка: работает

Быстрые VPS / VDS серверы

Скоростные SSD диски. Безлимитный трафик.
Администрирование в подарок.

Мощные серверы

Канал 1Гб/сек. Встроенная защита от DDoS атак.
Без установочной платы. Администрирование в подарок.

Быстрый хостинг

Сайтов и баз: не ограничено. SSL сертификат в подарок.
Тестовый период: 14 дней

Использование триггеров в MySQL и MariaDB

Триггеры в MySQL (от англ. Trigger) - это специальная хранимая процедура языка SQL, которая исполняется при наступлении определенного события (например, вставка, обновление, удаление записи). Она не может вызываться вручную. Поддержка этой процедуры стала доступна в MySQL 5.0.2, а так же во всех версиях MariaDB.

Процедура хранится в СУБД MySQL и ее вызов никак не зависит от используемого языка программирования или приложения.

Преимущества использования MySQL Triggers

Помимо того, что использование триггеров не зависит от приложения и используемого языка программирования, имеется еще ряд преимуществ:

  1. Сокращение сетевого трафика
  2. Минимизация используемых ресурсов
  3. Отсутствие необходимости передачи промежуточных результатов приложению
  4. Обеспечение целостности данных
  5. Триггер запускается автоматически

Все производимые операции считаются транзакциями, поэтому в случае ошибки вы легко можете откатить те или иные изменения.

Синтаксис создания триггера

Синтаксис созадния триггера довольно прост:

CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_stmt

Где:

  • trigger_name — название триггера
  • trigger_time — Время срабатывания триггера. BEFORE — перед событием. AFTER — после события.
  • trigger_event — Событие:
    1. insert — событие возбуждается операторами insert, data load, replace
    2. update — событие возбуждается оператором update
    3. delete — событие возбуждается операторами delete, replace. Операторы DROP TABLE и TRUNCATE не активируют выполнение триггера
  • tbl_name — название таблицы
  • 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`;

Особенности использования триггеров

На что стоит обратить внимание при использовании триггеров:

  1. Если вы удалите таблицу, к которой привязаны триггеры, то они тоже удалятся
  2. Триггер запускается для каждой записи в таблице. Если ваш запрос затрагивает, к примеру, 5 записей, то триггер будет запущен ровно 5 раз
  3. Для создания триггера, вы должны иметь привелегии SUPER

Когда Ваш проект уже вырастит до серьезных размеров, Вам потребуется аренда сервера в Дата-Центре. В RigWEB к каждому выделенному серверу предоставляется бесплатное администрирование. Мы поможем Вам настроить триггеры, если необходимо.

Заказать VDS

VPS/VDS за 389 р. от RigWEB.RU с администрированием

VPS/VDS серверы

Помогла ли вам статья?

Да Нет
5

раз уже помогла

Спасибо, что выбрали RigWEB!

Получить консультацию
специалиста
Вы получите ответ в течение 15 минут
Получить консультацию
специалиста в подборе VPS
Вы получите ответ в течение 15 минут
Заявка на бесплатный перенос сайта
Данные для переноса

Откуда перенести:

Список сайтов для переноса:
(укажите через запятую)

Доступ к текущему хостингу Чтобы мы смогли перенести сайты с Вашего текущего хостинга,нам необходимы реквизиты доступа в панель управления.

Логин

Пароль

Информация по Вашему аккаунту

Электронная почта

Фамилия, Имя,
Отчество

Комментарий к заказу

Получить консультацию специалиста
в подборе VPS
Пример

Память: 2GB RAM

Диск: 5GB SSD

Для сайта на Wordpress посещаемость 500 человек в сутки

Получить консультацию специалиста
в подборе выделенного сервера
Пример

Процессор: 2xXeon E5-2620

Память: 32 Gb

Диски: 2x1Tb SATA 2x240 SSD

RAID: контроллер + батарейка

Комментарий: нужен сервер с двумя блоками питания

Ваш запрос находится в стадии обработки.

Мы ответим Вам в течение 15 минут.

Спасибо, что выбрали RigWEB!