23.3 Использование триггеров
Триггер — это именованный объект базы данных, связанный со таблицей, который активируется при возникновении определённого события в таблице. Триггеры могут использоваться для проверки значений, вставляемых в таблицу, или для выполнения вычислений со значениями, участвующими в обновлении.
Триггер определяется так, чтобы он активировался при вставке, обновлении или удалении строк в связанной таблице. Эти операции над строками являются событиями триггера. Например, строки могут быть вставлены операторами INSERT или LOAD
DATA, и триггер вставки активируется для каждой вставленной строки. Триггер может быть настроен на активацию до или после события триггера. Например, можно настроить триггер, который активируется перед каждой строкой, вставляемой в таблицу, или после каждой обновлённой строки.
Триггеры MySQL активируются только для изменений, внесённых в таблицы операторами SQL. Это включает изменения в базовых таблицах, на которых основаны обновляемые представления. Триггеры не активируются при изменениях в таблицах, выполненных API, которые не передают операторы SQL в сервер MySQL. Это означает, что триггеры не активируются при обновлениях, выполненных с помощью API NDB.
Триггеры не активируются при изменениях в таблицах INFORMATION_SCHEMA или performance_schema. Эти таблицы на самом деле являются представлениями, и триггеры не допускаются для представлений.
В следующих разделах описан синтаксис создания и удаления триггеров, показаны некоторые примеры их использования и указано, как получить метаданные триггеров.
Дополнительные ресурсы
При работе с триггерами вам могут быть полезны Форумы пользователей MySQL.
Ответы на часто задаваемые вопросы о триггерах в MySQL см. в разделе A.5, «MySQL 5.7 FAQ: Триггеры».
Существуют некоторые ограничения на использование триггеров; см. раздел 23.8, «Ограничения на хранимые программы».
Логирование двоичных данных для триггеров происходит так, как описано в разделе 23.7, «Логирование двоичных данных хранимых программ».
© 2025 Oracle
Licensed under the GPLv2 License.