A.5 MySQL 9.2 FAQ: Триггеры
- A.5.1. Где можно найти документацию по триггерам MySQL 9.2?
- A.5.2. Есть ли форум обсуждения триггеров MySQL?
- A.5.3. Поддерживает ли MySQL триггеры уровня запроса или уровня строки?
- A.5.4. Есть ли какие-либо триггеры по умолчанию?
- A.5.5. Как управляются триггеры в MySQL?
- A.5.6. Можно ли просмотреть все триггеры в заданной базе данных?
- A.5.7. Где хранятся триггеры?
- A.5.8. Может ли триггер вызывать хранимую процедуру?
- A.5.9. Могут ли триггеры обращаться к таблицам?
- A.5.10. Может ли таблица иметь несколько триггеров с одинаковым событием триггера и временем действия?
- A.5.11. Может ли триггер обновлять таблицы на удаленном сервере?
- A.5.12. Работают ли триггеры с репликацией?
- A.5.13. Как действия, выполняемые через триггеры на источнике, реплицируются на реплику?
|
A.5.1. |
Где можно найти документацию по триггерам MySQL 9.2? |
|
A.5.2. |
Есть ли форум по обсуждению триггеров MySQL? |
Да. Он доступен по адресу https://forums.mysql.com/list.php?99. |
|
|
A.5.3. |
Имеет ли MySQL триггеры на уровне оператора или на уровне строки? |
Все триггеры являются |
|
|
A.5.4. |
Есть ли какие-либо триггеры по умолчанию? |
Не явно. MySQL имеет специфическое специальное поведение для некоторых |
|
|
A.5.5. |
Как управляются триггеры в MySQL? |
|
Триггеры могут быть созданы с помощью оператора Информацию о триггерах можно получить, запросив таблицу |
|
|
A.5.6. |
Есть ли способ просмотреть все триггеры в данной базе данных? |
|
Да. Вы можете получить список всех триггеров, определённых в базе данных SELECT TRIGGER_NAME, EVENT_MANIPULATION, EVENT_OBJECT_TABLE, ACTION_STATEMENT
FROM INFORMATION_SCHEMA.TRIGGERS
WHERE TRIGGER_SCHEMA='Для получения дополнительной информации об этой таблице см. Раздел 28.3.46, “Таблица INFORMATION_SCHEMA TRIGGERS”. Вы также можете использовать оператор |
|
|
A.5.7. |
Где хранятся триггеры? |
Триггеры хранятся в таблице |
|
|
A.5.8. |
Может ли триггер вызвать хранимую процедуру? |
Да. |
|
|
A.5.9. |
Могут ли триггеры обращаться к таблицам? |
Триггер может получить доступ к старым и новым данным в своей собственной таблице. Триггер также может воздействовать на другие таблицы, но не разрешается изменять таблицу, которая уже используется (для чтения или записи) оператором, который вызвал функцию или триггер. |
|
|
A.5.10. |
Может ли таблица иметь несколько триггеров с одинаковым событием триггера и временем действия? |
В MySQL 9.2 возможно определение нескольких триггеров для одной таблицы, имеющих одинаковое событие триггера и время действия. Например, вы можете иметь два |
|
|
A.5.11. |
Возможно ли обновление таблиц на удаленном сервере триггером? |
Да. Таблица на удаленном сервере может быть обновлена с использованием движка хранения |
|
|
A.5.12. |
Работают ли триггеры с репликацией? |
|
Да. Однако, способ их работы зависит от использования формата репликации MySQL “классический” на основе операторов или на основе строк. При использовании репликации на основе операторов триггеры на реплике выполняются операторами, которые выполняются на источнике (и реплицируются на реплику). При использовании репликации на основе строк триггеры не выполняются на реплике из-за операторов, которые были выполнены на источнике и затем реплицированы на реплику. Вместо этого, при использовании репликации на основе строк изменения, вызванные выполнением триггера на источнике, применяются на реплике. Для получения дополнительной информации см. Раздел 19.5.1.37, “Репликация и триггеры”. |
|
|
A.5.13. |
Как действия, выполняемые через триггеры на источнике, передаются на реплику? |
|
Опять же, это зависит от того, используете ли вы репликацию на основе операторов или на основе строк. Репликация на основе операторов. Сначала триггеры, которые существуют на источнике, должны быть повторно созданы на сервере реплики. После этого поток репликации работает как любой другой стандартный оператор DML, который участвует в репликации. Например, рассмотрим таблицу Репликация на основе строк. При использовании репликации на основе строк изменения, вызванные выполнением триггера на источнике, применяются на реплике. Однако сами триггеры фактически не выполняются на реплике в случае репликации на основе строк. Это потому, что если и источник, и реплика применили изменения из источника, а также триггер, вызывающий эти изменения, был применён на реплике, то изменения фактически будут применены дважды на реплике, что приведёт к разным данным на источнике и реплике. В большинстве случаев результат одинаковый для репликации на основе строк и на основе операторов. Однако, если вы используете разные триггеры на источнике и реплике, вы не можете использовать репликацию на основе строк. (Это потому, что формат на основе строк реплицирует изменения, внесённые триггерами, выполняемыми на источнике, на репликах, а не операторы, которые заставили триггеры выполняться, и соответствующие триггеры на реплике не выполняются.) Вместо этого любые операторы, вызывающие такие триггеры, должны быть реплицированы с помощью репликации на основе операторов. Для получения дополнительной информации см. Раздел 19.5.1.37, “Репликация и триггеры”. |
© 2025 Oracle
Licensed under the GPLv2 License.