A.5 MySQL 5.7 FAQ: Триггеры
- A.5.1. Где можно найти документацию по триггерам MySQL 5.7?
- 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 5.7? |
|
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='Дополнительную информацию об этой таблице см. в Разделе 24.3.29, «Таблица INFORMATION_SCHEMA TRIGGERS». Вы также можете использовать оператор |
|
|
A.5.7. |
Где хранятся триггеры? |
Триггеры хранятся в |
|
|
A.5.8. |
Может ли триггер вызвать хранимую процедуру? |
Да. |
|
|
A.5.9. |
Могут ли триггеры получать доступ к таблицам? |
Триггер может получить доступ к старым и новым данным в своей собственной таблице. Триггер также может влиять на другие таблицы, но не допускается модификация таблицы, которая уже используется (для чтения или записи) оператором, вызвавшим функцию или триггер. |
|
|
A.5.10. |
Может ли таблица иметь несколько триггеров с одинаковым событием триггера и временем действия? |
Можно определить несколько триггеров для данной таблицы, имеющих одинаковое событие триггера и время действия. Например, вы можете иметь два |
|
|
A.5.11. |
Может ли триггер обновлять таблицы на удалённом сервере? |
Да. Таблица на удалённом сервере может быть обновлена с использованием |
|
|
A.5.12. |
Работают ли триггеры с репликацией? |
|
Да. Однако способ их работы зависит от того, используете ли вы «классический» основанный на операторах или основанный на строках формат репликации MySQL. При использовании репликации на основе операторов триггеры на реплике выполняются операторами, которые выполняются на источнике (и реплицируются на реплику). При использовании репликации на основе строк триггеры не выполняются на реплике из-за операторов, которые были выполнены на источнике и затем реплицированы на реплику. Вместо этого, при использовании репликации на основе строк изменения, вызванные выполнением триггера на источнике, применяются на реплике. Для получения дополнительной информации см. Раздел 16.4.1.34, «Репликация и триггеры». |
|
|
A.5.13. |
Как выполняются действия через триггеры на источнике, реплицируемые на реплику? |
|
Опять же, это зависит от того, используете ли вы репликацию на основе операторов или репликацию на основе строк. Репликация на основе операторов. Сначала триггеры, которые существуют на источнике, должны быть повторно созданы на сервере реплики. После этого поток репликации работает так же, как любой другой стандартный оператор DML, участвующий в репликации. Например, рассмотрим таблицу Репликация на основе строк. При использовании репликации на основе строк изменения, вызванные выполнением триггера на источнике, применяются на реплике. Однако сами триггеры фактически не выполняются на реплике при репликации на основе строк. Это связано с тем, что если источник и реплика применяют изменения с источника, а также триггер, вызывающий эти изменения, применяется на реплике, изменения, по сути, будут применены дважды на реплике, что приведёт к разным данным на источнике и реплике. В большинстве случаев результат одинаков для репликации на основе операторов и на основе строк. Однако если у вас разные триггеры на источнике и реплике, вы не можете использовать репликацию на основе строк. (Это связано с тем, что формат на основе строк реплицирует изменения, внесённые триггерами, выполняющимися на источнике, на реплики, а не операторы, вызвавшие выполнение триггеров, и соответствующие триггеры на реплике не выполняются.) Вместо этого любые операторы, вызывающие такие триггеры, должны реплицироваться с использованием репликации на основе операторов. Для получения дополнительной информации см. Раздел 16.4.1.34, «Репликация и триггеры». |
© 2025 Oracle
Licensed under the GPLv2 License.