事务是否确保不会发生脏读?



我最近读了很多书,我现在非常困惑交易和锁定是如何工作的,以及它们之间的关系。

使用 SQLite 时,想象一下以程:

  1. 开始SQLite事务
  2. 在 SQLite 连接上运行 select 语句以返回值
  3. 如果返回值满足条件,请转到步骤 #4,否则转到步骤 #5
  4. 进行更新
  5. 提交 SQLite 事务

如果两个线程运行相同的代码,是否有可能在其中一个线程中获得所谓的"脏读"含义,在步骤 #3 和步骤 #4 之间,另一个线程可以运行更新(步骤 #4(?

是的,它被称为隔离级别:https://www.sqlite.org/isolation.html

最新更新