A.5 MySQL 8.4 常见问题解答:触发器
- 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 触发器的文档在哪里可以找到? |
请参阅 第 27.3 节,“使用触发器”。 |
|
A.5.2. |
是否有 MySQL 触发器讨论论坛? |
A.5.3. |
MySQL 是否支持语句级或行级触发器? |
所有触发器都是 |
|
A.5.4. |
是否有默认触发器? |
没有明确的。MySQL 对某些 |
|
A.5.5. |
如何在 MySQL 中管理触发器? |
触发器可以使用 可以通过查询 |
|
A.5.6. |
是否可以查看某个数据库中的所有触发器? |
是的。可以使用
更多信息,请参阅 第 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 节,“复制和触发器”. |