PDO事务是否会阻塞,直到所有其他事务都被提交?

时间:2013-06-04 23:37:09

标签: mysql database pdo

如果我是正确的,PDO交易不是真正的交易:他们只是关闭自动提交(见documentation)。

因此,如果我有一个删除行的事务A和修改同一行的事务B,则可能发生以下情况。

  1. 事务A启动并关闭自动提交。
  2. 事务B启动并关闭自动提交。
  3. 事务A删除一行。
  4. 事务B修改同一行。
  5. 交易A完成并提交更改。
  6. 交易B完成并提交更改。
  7. 但是在第6步,该行已在步骤5中删除。会发生什么?

    另外,如何确保在事务A提交之前让事务B阻塞?仅供参考,我正在使用带有mysql的PDO和innoDB。

    谢谢。

1 个答案:

答案 0 :(得分:0)

正如@eggyal指出的那样,事务可以同时发生,但是DELETE语句会在事务提交之前对行进行排他锁定,因此事务B将在步骤4自动阻塞,直到事务A被提交。独占锁定阻止所有写入和读取。