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