假设我在一个myisam表上有一个附加了触发器的操作(让它成为insert)。我知道mysql在运行这个insert时执行隐式表锁。问题:触发器会在这个隐式锁中运行吗?触发器中使用的表是否会被此锁锁定?换句话说,触发器的执行是原子操作(比如我的insert)的一部分吗?顺便问一下,innodb呢?相同的?触发器是否 Package 到显式事务中?
aiazj4mn1#
innodb查询在隐式事务中运行。它实际上运行事务中的所有内容。“no transaction”模式由每条语句之后的隐式提交来模拟(“启动事务”禁用自动隐式提交)。此事务包括为查询运行的所有触发器,以及外键的共享模式锁。使用myisam,触发器将锁定它修改的任何表,就像普通查询一样。不管它是不是原子的-我不知道。
1条答案
按热度按时间aiazj4mn1#
innodb查询在隐式事务中运行。
它实际上运行事务中的所有内容。“no transaction”模式由每条语句之后的隐式提交来模拟(“启动事务”禁用自动隐式提交)。
此事务包括为查询运行的所有触发器,以及外键的共享模式锁。
使用myisam,触发器将锁定它修改的任何表,就像普通查询一样。不管它是不是原子的-我不知道。