- A.5.1. 在哪里可以找到 MySQL 9.0 触发器的文档?
- 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 9.0 触发器的文档? |
参见 第 27.4 节,“使用触发器”. | |
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 9.0 中,可以为给定表定义多个触发器,这些触发器具有相同的触发器事件和操作时间。例如,您可以为一个表创建两个 | |
A.5.11. | 触发器是否可以更新远程服务器上的表? |
是的。可以使用 | |
A.5.12. | 触发器是否与复制一起使用? |
是的。但是,它们的工作方式取决于您使用的是 MySQL 的 “经典” 语句级或行级复制格式。 使用语句级复制时,副本上的触发器由在源上执行(并复制到副本)的语句执行。 使用行级复制时,触发器不会在副本上执行,这是因为这些语句是在源上运行,然后复制到副本。相反,使用行级复制时,在源上执行触发器所导致的更改会应用在副本上。 有关更多信息,请参见 第 19.5.1.37 节,“复制和触发器”. | |
A.5.13. | 触发器在源复制到副本上如何执行操作? |
同样,这取决于您使用的是语句级还是行级复制。 语句级复制。 首先,必须在副本服务器上重新创建存在于源上的触发器。完成此操作后,复制流程与参与复制的任何其他标准 DML 语句一样。例如,考虑一个名为 行级复制。 使用行级复制时,在源上执行触发器所导致的更改会应用在副本上。但是,在行级复制下,触发器本身实际上不会在副本上执行。这是因为,如果源和副本都应用了来自源的更改,并且此外,在副本上也应用了导致这些更改的触发器,那么更改实际上会在副本上应用两次,导致源和副本上的数据不同。 在大多数情况下,行级复制和语句级复制的结果相同。但是,如果在源和副本上使用不同的触发器,则不能使用行级复制。(这是因为行级格式会将由在源上执行的触发器引起的更改复制到副本,而不是导致触发器执行的语句,以及副本上的相应触发器不会执行。)相反,任何导致此类触发器执行的语句都必须使用语句级复制来复制。 有关更多信息,请参见 第 19.5.1.37 节,“复制和触发器”. |