Триггеры mysql что это

Как создавать и использовать триггеры в Mysql.

Что такое триггеры в Mysql.

Планируем структуру базы данных.

Создадим для примера базу данных для блога. Нам понадобится две таблицы:

-`blog`: хранит уникальный идентификатор поста, заголовок, содержимое и флаг того, считается ли запись удаленной (на деле запись блога удаляться никогда не будет, а будет помечаться флагом, что запись считается удаленной или не удаленной).

-`audit`: хранит базовый набор исторических изменений с идентификатором записи,
идентификатором сообщения блога, типом изменения (NEW, EDIT или DELETE) и датой/временем этого изменения.

Создадим таблицу `blog`:

Далее напишем sql код для создания нашей таблицы `audit`. Нам нужно назначить для всех полей индексы и оприделить внешний ключ
как audit.blog_id который ссылается на поле id из таблицы `blog`.

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

Создание триггера.

Основной синтаксис триггера:

Итак, нам требуется два триггера AFTER INSERT и AFTER UPDATE на событие в таблице `blog`.
Нет необходимости определять триггер DELETE, поскольку пост помечен как удаленный,
установив для поля `deleted` значение true.

Создаем AFTER INSERT триггер. Тут мы вводим переменную @changetyp, которая будет хранить значение из
enum(‘NEW’,’EDIT’,’DELETE’) в зависимости от условия, какое значение установлено в blog.deleted:

Наконец, мы устанавливаем разделитель обратно в точку с запятой:
DELIMITER ;

Триггер AFTER UPDATE почти идентичен:

Это выходит за рамки этой статьи, но вы можете рассмотреть возможность вызова единой хранимой
процедуры, которая обрабатывает оба триггера.

Проверка работы триггера.

Новая запись появляется в таблице `blog`, как и следовало ожидать:
Триггеры mysql что это. Смотреть фото Триггеры mysql что это. Смотреть картинку Триггеры mysql что это. Картинка про Триггеры mysql что это. Фото Триггеры mysql что это
Кроме того, в нашей таблице `audit` появляется новая запись:
Триггеры mysql что это. Смотреть фото Триггеры mysql что это. Смотреть картинку Триггеры mysql что это. Картинка про Триггеры mysql что это. Фото Триггеры mysql что это
Давайте обновим наш текст в блоге:

Помимо изменения поста, в таблице «audit» появляется новая запись:
Триггеры mysql что это. Смотреть фото Триггеры mysql что это. Смотреть картинку Триггеры mysql что это. Картинка про Триггеры mysql что это. Фото Триггеры mysql что это
Наконец, давайте отметим пост как удаленный:

Соответственно обновляется таблица «audit», и у нас есть запись о произошедших изменениях:
Триггеры mysql что это. Смотреть фото Триггеры mysql что это. Смотреть картинку Триггеры mysql что это. Картинка про Триггеры mysql что это. Фото Триггеры mysql что это
Вот так. Все работает и триггеры отлично справляются со своей задачей.

В этой статье мы рассмотрели простой пример, который дает некоторое представление о возможностях триггеров в
MySQL.

Триггеры mysql что это. Смотреть фото Триггеры mysql что это. Смотреть картинку Триггеры mysql что это. Картинка про Триггеры mysql что это. Фото Триггеры mysql что это

Приветствую!

Буду рад в любой поддержке для развития этого сайта. Номер карты Приват Банка 5169 3600 1047 4751

Источник

Введение в триггеры MySQL

Очень может быть, что вы знаете, что такое триггер базы данных, хотя бы в общих терминах. Есть даже шанс, что вы знаете, что MySQL поддерживает триггеры и имеет практику работы с ними. Но скорее всего, что большинство из вас, даже вооруженные знаниями не представляют себе, какие преимущества скрывают триггеры MySQL. Этот инструмент должен быть у вас на вооружении, так как триггеры могут полностью изменить ваш способ работы с данными.

Введение : что такое триггер

“Не смотря на то, что приложения становятся все более и более сложными, мы можем абстрагировать уровень приложений для того, чтобы управлять ими и увеличивать удобство процесса разработки.”

Триггеры были введены в MySQL начиная с версии 5.0.2. Синтаксис триггеров несколько чужероден. MySQL использует стандарт ANSI SQL:2003 для процедур и других функций. Если вы работаете с языками программирования, то понять его будет не сложно. Спецификация отсутствует в свободном доступе, поэтому мы постараемся использовать простые структуры и будем объяснять, что происходит в триггере. Будут использоваться такие же структуры, как и в любом языке программирования.

Как уже упоминалось выше, триггеры выполняются как процедуры при событиях UPDATE, DELETE и INSERT. Они могут быть выполнены либо до либо после определения события. Таким образом Вы можете определить триггер, которые будет выполняться перед DELETE или после DELETE, и так далее. Это значит, что можно иметь один триггер, который выполнится до INSERT и совершенно другой, который выполнится после INSERT, что является весьма мощным инструментом.

Начало: структура таблиц, инструменты и заметки

В статье мы будем работать с выдуманной системой для корзины покупок, каждый элемент которой будет иметь цену. Структура данных будет проста, насколько это возможно с целью продемонстрировать процедуры работы с триггерами. Наименования таблиц и столбцов придуманы с целью облегчения понимания, а не для реальной работы. Также используется TIMESTAMPS для облегчения учебного процесса. Таблицы имеют имена carts, cart_items, cart_log, items, items_cost.

Также будут использоваться очень простые запросы. Нет связи между переменными и не используется никакого ввода данных. Запросы подготавливались так, чтобы быть как можно более простыми и понятными для чтения.

Для определения времени выполнения использовался Particle Tree PHP Quick Profiler. Для иллюстрации эффектов на базе данных использовался Chive. Chive предназначен только для MySQL 5+ и очень похож на PHPMyAdmin. Он имеет более выразительный интерфейс, но содержит значительно больше ошибок на текущий момент. Использование Chive обусловлено желанием представить более выразительные скрин шоты запросов.

Чтобы изменить разделитель, нужно выполнить команду перед командой триггера:

А после команды триггера надо ввести:

Простой триггер : целостность данных

Если Вы захотите выполнить даже незначительную нормализацию структуры базы данных, может получиться так, что нужно будет удалять источник основных данных, который имеет фрагменты, участвующие в общем потоке данных. Например, у вас может быть cart_id, который ссылается на две или три таблицы без внешних ключей, особенно при использовании механизма MyISAM, который их не поддерживает.

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

Вернемся к триггерам. Создадим простой триггер, который при удалении корзины будет удалять все элементы корзины, которые имеют такой же cart_id:

Очень простой синтаксис. Давайте разберем триггер подробно.

Первая строка“CREATE TRIGGER `tutorial`.`before_delete_carts`”. Это команда для MySQL создать триггер для базы данных “tutorial”, который будет иметь имя “before_delete_carts”. Будем использовать схему имен для триггеров “Когда_Что_Таблица”.

Вторая строка указывает для MySQL определение триггера “BEFORE DELETE ON `trigger_carts` FOR EACH ROW”. Мы говорим MySQL, что перед тем, как провести удаление из данной таблицы, для каждой строки нужно сделать что-то. Что нужно сделать, объясняется далее между BEGIN и END. “DELETE FROM trigger_cart_items WHERE OLD.cart_id = cart_id;” Для MySQL задается, что перед тем, как удалить из trigger_carts, нужно взять OLD.cart_id и также удалить из trigger_cart_items. Синтаксис OLD определяет переменную. Он будет обсуждаться в следующем разделе, где будут комбинироваться OLD и NEW.

Триггеры mysql что это. Смотреть фото Триггеры mysql что это. Смотреть картинку Триггеры mysql что это. Картинка про Триггеры mysql что это. Фото Триггеры mysql что это

Один запрос с триггером:

Триггеры mysql что это. Смотреть фото Триггеры mysql что это. Смотреть картинку Триггеры mysql что это. Картинка про Триггеры mysql что это. Фото Триггеры mysql что это

Как вы можете видеть, существует небольшой прирост производительности, которого следовало ожидать. База данных для примера использует тот же самый сервер, что и клиент. Но если сервер баз данных расположен в другом месте, то следует ожидать более значительной разницы, так как ко времени выполнения запросов добавится время передачи данных между серверами.Также нужно отметить, что первый раз триггер может выполняться значительно медленнее, чем в следующие разы.

Перемещение логики данных на уровень данных подобно тому, как задание стиля перемещается с уровня разметки на уровень презентации, что известно всему миру как CSS.

Чудесный простой триггер : журналирование и аудит

Следующий пример, который мы рассмотрим связан с журналированием событий. Например, мы хотим наблюдать за каждым товаром, который помещается в корзину. Возможно, мы хотим отслеживать рейтинг покупки товаров. Возможно, мы просто хотим иметь копию каждого товара, помещенного в корзину, не обязательно для продажи, а для анализа поведения покупателей. Какими бы ни были причины, давайте посмотрим на триггер INSERT, который открывает возможности для журналирования или аудита наших данных.

До использования триггера, вероятно мы делали что-то похожее:

Триггеры mysql что это. Смотреть фото Триггеры mysql что это. Смотреть картинку Триггеры mysql что это. Картинка про Триггеры mysql что это. Фото Триггеры mysql что это

Теперь мы можем создать очень простой триггер для процесса журналирования:

Первая строка “CREATE TRIGGER `after_insert_cart_items`”. Для MySQL задается команда, создать триггер с именем “after_insert_cart_items”. Имя может быть “Foo”, или “BullWinkle” или какое-то другое, но лучше использовать ранее описанную схему имен триггера. Далее следует “AFTER INSERT ON `trigger_cart_items` FOR EACH ROW”. Снова мы говорим, что после того, как что-то будет вставлено в trigger_cart_items, для каждой строки нужно выполнить операции между BEGIN и END.

Строка “INSERT INTO trigger_cart_log (cart_id, item_id) VALUES (NEW.cart_id, NEW.item_id);” является стандартным запросом с использованием двух переменных. Здесь используются значения NEW, которые вставляются в таблицу cart_items.

Снова выполнение нашего запроса осуществляется быстрее:

Триггеры mysql что это. Смотреть фото Триггеры mysql что это. Смотреть картинку Триггеры mysql что это. Картинка про Триггеры mysql что это. Фото Триггеры mysql что это

Для проверки, что триггер работает, посмотрим значения в таблице:

Триггеры mysql что это. Смотреть фото Триггеры mysql что это. Смотреть картинку Триггеры mysql что это. Картинка про Триггеры mysql что это. Фото Триггеры mysql что это

Более сложный триггер : бизнес логика

Начиная с этого момента мы перестанем рассматривать старый способ использования множественных запросов и их сравнение с техникой использования триггеров. Давайте рассмотрим несколько более продвинутых примеров использования триггеров.

Триггеры mysql что это. Смотреть фото Триггеры mysql что это. Смотреть картинку Триггеры mysql что это. Картинка про Триггеры mysql что это. Фото Триггеры mysql что это

Данный триггер работает отлично.

Для того, чтобы решить задачу, мы снова будем работать с UPDATE, но в этот раз триггер будет выполняться до выполнения запроса. Также будет использоваться выражение IF.

Вот текст триггера:

Триггеры mysql что это. Смотреть фото Триггеры mysql что это. Смотреть картинку Триггеры mysql что это. Картинка про Триггеры mysql что это. Фото Триггеры mysql что это

Триггеры mysql что это. Смотреть фото Триггеры mysql что это. Смотреть картинку Триггеры mysql что это. Картинка про Триггеры mysql что это. Фото Триггеры mysql что это

Триггеры mysql что это. Смотреть фото Триггеры mysql что это. Смотреть картинку Триггеры mysql что это. Картинка про Триггеры mysql что это. Фото Триггеры mysql что это

Заключение

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

Данный урок подготовлен для вас командой сайта ruseller.com
Источник урока: www.net.tutsplus.com
Перевел: Сергей Фастунов
Урок создан: 4 Июля 2010
Просмотров: 147310
Правила перепечатки

5 последних уроков рубрики «Разное»

Как выбрать хороший хостинг для своего сайта?

Выбрать хороший хостинг для своего сайта достаточно сложная задача. Особенно сейчас, когда на рынке услуг хостинга действует несколько сотен игроков с очень привлекательными предложениями. Хорошим вариантом является лидер рейтинга Хостинг Ниндзя — Макхост.

Проект готов, Все проверено на локальном сервере OpenServer и можно переносить сайт на хостинг. Вот только какую компанию выбрать? Предлагаю рассмотреть хостинг fornex.com. Отличное место для твоего проекта с перспективами бурного роста.

Триггеры mysql что это. Смотреть фото Триггеры mysql что это. Смотреть картинку Триггеры mysql что это. Картинка про Триггеры mysql что это. Фото Триггеры mysql что это

Разработка веб-сайтов с помощью онлайн платформы Wrike

Триггеры mysql что это. Смотреть фото Триггеры mysql что это. Смотреть картинку Триггеры mysql что это. Картинка про Триггеры mysql что это. Фото Триггеры mysql что это

20 ресурсов для прототипирования

Подборка из нескольких десятков ресурсов для создания мокапов и прототипов.

Триггеры mysql что это. Смотреть фото Триггеры mysql что это. Смотреть картинку Триггеры mysql что это. Картинка про Триггеры mysql что это. Фото Триггеры mysql что это

Топ 10 бесплатных хостингов

Небольшая подборка провайдеров бесплатного хостинга с подробным описанием.

Источник

Триггеры mysql что это

Эта глава описывает синтаксис для создания и удаления триггеров, показывает некоторые примеры того, как использовать их. Обсуждение ограничений на использование дано в разделе » 11.1. Ограничения на сохраненные подпрограммы и триггеры».

6.1. Синтаксис CREATE TRIGGER

Когда триггер активизирован, предложение DEFINER определяет привилегии, которые применяются, как описано ниже в этом разделе.

trigger_event указывает вид инструкции, которая активизирует триггер. Здесь trigger_event может быть одним из следующего:

Замечание : в настоящее время триггеры не активизированы каскадными действиями внешнего ключа. Это ограничение будет сниматься как можно скорее.

Обратите внимание : до MySQL 5.0.10 триггер не может содержать прямые ссылки к именам таблиц. С MySQL 5.0.10, Вы можете записывать имена, как показано в этом примере:

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

В результате данные в четырех таблицах будут следующие:

Начиная с MySQL 5.0.17, MySQL проверяет привилегии триггера подобно этому:

SELECT для подчиненной таблицы, если ссылки к столбцам таблицы происходят через OLD. col_name или or NEW. col_name в определении триггера.

Любые другие привилегии обычно требуются для инструкций, выполненных триггером.

До MySQL 5.0.17, MySQL проверяет привилегии подобно этому:

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

Обратите внимание, что введение предложения DEFINER меняет значение CURRENT_USER() в определении триггера: функция CURRENT_USER() работает со значением DEFINER в MySQL 5.0.17 (и выше) или с тем пользователем, чьи действия заставили выполниться триггер (до MySQL 5.0.17).

6.2. Синтаксис DROP TRIGGER

Кроме того, триггеры, созданные в MySQL 5.0.16 или выше, не могут быть удалены в MySQL 5.0.15 или ниже. Если Вы желаете выполнить такой возврат, Вы также должны в этом случае удалить все триггеры и заново их пересоздать после смены версий.

6.3. Использование триггеров

Поддержка триггеров включена, начиная с MySQL 5.0.2. Этот раздел обсуждает, как использовать триггеры и некоторые их ограничений.

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

Следующие инструкции создают таблицу и триггер для нее:

Имена триггеров существуют в пространстве имен схемы. Это означает, что все триггеры должны иметь уникальные имена внутри схемы. Триггеры в различных схемах могут иметь то же самое имя.

В триггере BEFORE значение NEW для столбца AUTO_INCREMENT : 0, а не автоматически сгенерированный порядковый номер, который будет сгенерирован, когда новая запись фактически вставлена.

OLD и NEW представляют собой MySQL-расширения триггеров.

Имеются некоторые ограничения на то, что может появляться в инструкциях:

    До MySQL 5.0.10 триггер не может содержать прямые ссылки к именам таблиц.

    MySQL обрабатывает ошибки в выполнении триггеров следующим образом:

    Триггер BEFORE активизирован попыткой вставить или изменить строку, независимо от того, удачной ли была попытка.

    Триггер AFTER выполнен только, если триггер BEFORE и операция со строкой (вместе!) выполняются успешно.

    Ошибка в триггере BEFORE или AFTER вызывает сбой всей инструкции, которая вызвала триггер.

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

    6.4. MySQL 5 FAQ по триггерам

    6.4.1: Имеется ли форум для обсуждения триггеров в MySQL?

    6.4.2: MySQL 5.1 имеет триггеры операторного уровня или уровня строки?

    6.4.3: Имеется ли любое значение по умолчанию для триггеров?

    6.4.4: Как управлять триггерами в MySQL?

    6.4.5: Имеется ли способ просмотреть все триггеры в конкретной базе данных?

    6.4.6: Где хранятся триггеры?

    6.4.7: Может триггер вызывать сохраненную процедуру?

    6.4.8: Может триггер обращаться к таблицам?

    Триггер может обращаться к старым и новым данным в собственной таблице. Через сохраненную процедуру, многотабличную модификацию или инструкцию удаления триггер может также воздействовать и на другие таблицы.

    6.4.9: Может триггер вызывать внешнюю прикладную программу через UDF?

    Нет, не в настоящее время.

    6.4.10: Может триггер модифицировать таблицы на удаленном сервере?

    Источник

    Использование триггеров в СУБД MySQL

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

    Хранимые процедуры запускают во всех средах, и нет необходимости перестроения логики. С того момента как вы создали хранимую процедуру, не важно какое приложение вы используете для вызова процедуры. Также не важно на каком языке вы программируете, логика процедуры содержится на сервере БД.

    Также хранимые процедуры могут сократить сетевой трафик. Сложные, повторяющиеся задачи можно обрабатывать с помощью процедур на сервере Баз данных, без необходимости отсылки промежуточных результатов приложению.

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

    Общий вид синтаксиса для создания тригера:

    Где
    trigger_name — название триггера;
    trigger_time — время срабатывания триггера. BEFORE — перед событием. AFTER — после события;
    trigger_event — событие:

    tbl_name — название таблицы;
    trigger_body — выражение, которое выполняется при активации триггера.

    Триггеры могут быть привязаны не к таблице, а к представлению ( VIEW ). В этом случае с их помощью реализуется механизм «обновляемого представления».

    Здесь оператор DELIMITER служит для определения знака начала/окончания процедуры и может состоять более, чем из одного символа (необходимо выбирать разделитель, который не будет использоваться в процедуре).

    Для удаления триггера необходимо выполнить запрос:

    Для просмотра триггеров в базе данных используется оператор:

    Триггеры имеют несколько важных особенностей использования:

    Источник

    Использование триггеров базы данных MySQL в Ubuntu 18.04

    Published on April 9, 2020

    Автор выбрал фонд Apache Software Foundation для получения пожертвования в рамках программы Write for DOnations.

    Введение

    Вы также можете использовать триггеры, чтобы сохранить правила проверки на уровне базы данных. Это помогает избежать нарушения бизнес-логики при совместном использовании одного источника данных несколькими приложениями. Это значительно уменьшает количество обращений к серверу базы данных, что, в свою очередь, улучшает время отклика приложений. Поскольку сервер базы данных выполняет триггеры, они могут воспользоваться улучшенными ресурсами сервера, такими как RAM и CPU.

    В этом обучающем модуле вы научитесь создавать, использовать и удалять различные типы триггеров в вашей базе данных MySQL.

    Предварительные требования

    Прежде чем начать, убедитесь в наличии следующего:

    Шаг 1 — Создание тестовой базы данных

    На этом этапе вы создадите тестовую клиентскую базу данных пользователя с несколькими таблицами для демонстрации работы триггеров MySQL.

    Более подробно о работе MySQL можно прочитать в инструкции Запросы в MySQL​​​.

    Вначале войдите на сервер MySQL как root:

    Далее переходите к test_db с помощью:

    После выполнения каждой команды INSERT вы увидите следующий вывод:

    Чтобы убедиться, что тестовые записи были успешно вставлены, выполните команду SELECT :

    Запустите следующую команду:

    Вы сможете добавить тестовые данные в колонку sales на следующих этапах во время тестирования триггеров. Далее создайте таблицу audit_log для регистрации обновлений, внесенных в таблицу sales при имплементации триггера AFTER UPDATE в шаге 5:

    Имея базу данных test_db и четыре таблицы, теперь вы можете перейти к работе с различными триггерами MySQL в вашей базе данных.

    Шаг 2 — Создание триггера Before Insert

    Общий синтаксис для создания триггера MySQL показан в следующем примере:

    Структура триггера включает:

    [TRIGGER_NAME] : триггер должен иметь имя, и вы можете указать его именно здесь.

    [TRIGGER TIME]​​​ : триггер может быть вызван в разные моменты времени. MySQL позволяет определить, когда запускать триггер — до или после операции с базой данных.

    [TABLE] : любой триггер, который вы создаете в своей базе данных MySQL, должен быть связан с таблицей.

    FOR EACH ROW : этот оператор позволяет MySQL выполнять код триггера для каждой строки, на которую влияет триггер.

    Убедитесь, что вы вошли на сервер MySQL. Затем введите следующие команды MySQL одну за другой:

    Чтобы вызвать общее сообщение об ошибке, используются следующие строки для информирования пользователя:

    Эта ошибка показывает, что код триггера работает должным образом.

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

    Для подтверждения вставки данных запустите следующую команду:

    Вывод подтверждает вставку данных в таблицу:

    На этом этапе вы протестировали способность триггеров проверять данные перед вставкой в базу данных.

    Теперь поработайте с триггером AFTER INSERT для сохранения связанной информации в разных таблицах.

    Шаг 3 — Создание триггера After Insert

    Триггеры AFTER INSERT выполняются после успешной вставки записей в таблицу. Эта функция может использоваться для автоматического запуска других бизнес-логик. Например, в банковских приложениях триггер AFTER INSERT может закрывать кредитный счет, когда клиент завершает выплату кредита. Триггер может отслеживать все платежи, внесенные в таблицу транзакций, и автоматически закрывать кредит, как только кредитный баланс будет равен нулю.

    Для создания триггера AFTER INSERT введите следующие команды:

    После успешной вставки записи убедитесь, что запись нового статуса была добавлена в таблицу customer_status :

    Вывод подтверждает успешную работу триггера.

    Триггер AFTER INSERT​​​ полезен для мониторинга жизненного цикла клиента. В производственной среде учетные записи клиентов могут проходить различные этапы, например открытие, приостановка и закрытие счета.

    Шаг 4 — Создание триггера Before Update

    Введите следующие команды SQL одну за другой, чтобы создать триггер BEFORE UPDATE :

    Вы увидите следующий вывод, предоставляющий SET MESSAGE_TEXT :

    Вы использовали триггер BEFORE UPDATE для применения бизнес-правила. Теперь перейдем к использованию триггера AFTER UPDATE для ведения журнала аудита.

    Шаг 5 — Создание триггера After Update

    Триггер AFTER UPDATE вызывается после успешного обновления записи в базе данных. Такое поведение триггера подходит для ведения журнала аудита. В многопользовательской среде администратор с целью аудита может просмотреть историю пользователей, обновляющих записи в конкретной таблице.

    Для создания триггера, выполните следующие команды SQL:

    Команда SELECT USER() извлекает текущего пользователя, выполняющего операцию, а оператор NOW() извлекает значение текущей даты и времени с сервера MySQL.

    Затем обновите запись:

    Вывод должен выглядеть так:

    Теперь выполните следующую команду, чтобы проверить, смог ли триггер AFTER UPDATE зарегистрировать новую запись в таблице audit_log :

    Также в таблице вы увидите дату и время, когда было выполнено обновление, что важно для аудита.

    Далее вы будете использовать триггер DELETE для обеспечения целостности ссылок на уровне базы данных.

    Шаг 2 — Создание триггера Before Delete

    Теперь попробуйте удалить клиента, у которого есть связанная запись в таблице sales:

    В результате вы получите следующий вывод:

    Триггер BEFORE DELETE может предотвратить случайное удаление связанной информации в базе данных.

    Шаг 5 — Создание триггера After Delete

    Теперь проверьте, удалились ли записи для этого клиента из таблицы sales :

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

    Шаг 8 — Удаление триггеров

    Необходимость удаления триггеров возникает, когда вы хотите воссоздать его структуру. В таком случае вы можете сбросить триггер и создать новый с помощью разных команд для триггеров.

    Заключение

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

    Дополнительную информацию по использованию вашей базы данных MySQL можно найти здесь:

    Источник

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *