4

如果我是正确的,PDO 事务并不是真正的事务:它们只是关闭自动提交(参见文档)。

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

  1. 事务 A 启动并关闭自动提交。
  2. 事务 B 启动并关闭自动提交。
  3. 事务 A 删除一行。
  4. 事务 B 修改同一行。
  5. 事务 A 完成并提交更改。
  6. 事务 B 完成并提交更改。

但是在第 6 步,该行已经在第 5 步中被删除了。会发生什么?

另外,我怎样才能确保让事务 B 阻塞,直到事务 A 被提交?仅供参考,我将 PDO 与 mysql 与 innoDB 一起使用。

谢谢你。

4

1 回答 1

0

正如@eggyal 指出的那样,事务可以同时发生,但 DELETE 语句会在行上设置排他锁,直到事务提交,所以事务 B 将在第 4 步自动阻塞,直到事务 A 被提交。排他锁会阻止所有写入和读取。

于 2013-06-05T00:15:57.497 回答