假设我在 MyISAM 表上进行了一些操作(让它成为 INSERT),并附加了触发器。
我知道 MySQL 在运行此 INSERT 时会执行隐式表锁定。
问题:触发器会在这个隐式锁内部运行吗?触发器中使用的表会被这个锁锁定吗?
换句话说,触发器的执行是原子操作(例如我的 INSERT)的一部分吗?
顺便说一句,InnoDB 怎么样?相同?触发器是否包含在显式事务中?
最佳答案
InnoDB 查询在隐式事务中运行。
它实际上运行事务中的所有内容。 “无事务”模式通过每个语句后的隐式提交来模拟(“启动事务”会禁用自动隐式提交)。
此事务包括为查询运行的所有触发器,以及外键的共享模式锁。
使用 MyISAM,触发器将锁定它修改的任何表,就像普通查询一样。它是否是原子的 - 我不知道。
关于mysql - MyISAM 和触发器原子性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48252471/