- A.5.1. 在哪里可以找到 MySQL 5.7 触发器的文档?
- A.5.2。 是否有 MySQL 触发器的讨论论坛?
- A.5.3. MySQL 5.7 是否有语句级或行级触发器?
- 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 触发器的文档? |
请参阅第 23.3 节,“使用触发器”。 | |
A.5.2。 | 是否有 MySQL 触发器的讨论论坛? |
是的。它可以在https://forums.mysql.com/list.php?99找到。 | |
A.5.3. | MySQL 5.7 是否有语句级或行级触发器? |
在 MySQL 5.7 中,所有触发器都是 | |
A.5.4。 | 是否有任何默认触发器? |
不明确。MySQL 确实对某些 | |
A.5.5。 | MySQL 中的触发器是如何管理的? |
在 MySQL 5.7 中,可以使用
触发器的信息可以通过查询
| |
A.5.6. | 有没有办法查看给定数据库中的所有触发器? |
是的。
有关此表的更多信息,请参阅 第 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 节,“复制和触发器”。 |