- 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 表”. 还可以使用特定于 MySQL 的 | |
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 节,“复制和触发器”. |