- A.5.1. 在哪里可以找到 MySQL 8.3 触发器的文档?
- A.5.2. 是否有 MySQL 触发器讨论论坛?
- A.5.3. MySQL 8.3 是否具有语句级或行级触发器?
- 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.3 触发器的文档? |
请参阅 第 27.3 节,“使用触发器”。 |
|
A.5.2. |
是否有 MySQL 触发器讨论论坛? |
A.5.3. |
MySQL 8.3 是否具有语句级或行级触发器? |
在 MySQL 8.3 中,所有触发器都是 |
|
A.5.4. |
是否有默认触发器? |
不明确。MySQL 对某些 |
|
A.5.5. |
MySQL 中如何管理触发器? |
在 MySQL 8.3 中,可以使用 可以通过查询 |
|
A.5.6. |
是否可以查看给定数据库中的所有触发器? |
是的。可以使用以下查询来获取数据库
请参阅 第 28.3.45 节,“INFORMATION_SCHEMA TRIGGERS 表”。 也可以使用 |
|
A.5.7. |
触发器存储在哪里? |
触发器存储在 |
|
A.5.8. |
触发器是否可以调用存储过程? |
是的。 |
|
A.5.9. |
触发器是否可以访问表? |
触发器可以访问自己的表中的旧数据和新数据。触发器也可以影响其他表,但是它不能修改已经被语句或函数所使用的表(用于读取或写入)。 |
|
A.5.10. |
一个表可以有多个触发器具有相同的触发事件和操作时间吗? |
在 MySQL 8.3 中,可以为给定表定义多个触发器,这些触发器具有相同的触发事件和操作时间。例如,可以为一个表定义两个 |
|
A.5.11. |
触发器是否可以更新远程服务器上的表? |
是的。可以使用 |
|
A.5.12. |
触发器是否与复制兼容? |
是的。但是,它们的工作方式取决于您是否使用 MySQL 的“经典”语句复制或行复制格式。 使用语句复制时,在副本上执行的语句将触发副本上的触发器。 使用行复制时,不会在副本上执行触发器,而是将源上执行触发器所引起的更改应用于副本。 有关更多信息,请参阅 第 19.5.1.36 节,“复制和触发器”。 |
|
A.5.13. |
触发器在源上执行的操作如何在副本上复制? |
再次,这取决于您是否使用基于语句的复制或基于行的复制。 基于语句的复制。 首先,在源服务器上存在的触发器必须在副本服务器上重新创建。一旦完成,这个复制流程将像任何其他标准DML语句一样参与复制。例如,考虑一个表 基于行的复制。 当您使用基于行的复制时,源服务器上触发器执行的更改将被应用于副本服务器上。然而,在基于行的复制下,触发器本身不会在副本服务器上执行。这是因为,如果源服务器和副本服务器都应用了源服务器上的更改,并且触发器也在副本服务器上执行,那么更改将在副本服务器上被应用两次,导致源服务器和副本服务器上的数据不同。 在大多数情况下,基于行的复制和基于语句的复制的结果相同。然而,如果您在源服务器和副本服务器上使用不同的触发器,那么您不能使用基于行的复制。(这是因为基于行的格式将源服务器上触发器执行的更改复制到副本服务器上,而不是触发器执行的语句,而副本服务器上的相应触发器不会被执行。)相反,导致触发器执行的语句必须使用基于语句的复制。 有关更多信息,请参阅 第 19.5.1.36 节,“复制和触发器”。 |