事务是否确保脏读不会发生?
Does transaction assures dirty reads do not happen?
我最近看了很多书,现在我很困惑事务和锁定是如何工作的以及它们之间的关系。
使用 SQLite 时,想象一下以下流程:
- 开始 SQLite 事务
- 运行 SQLite 连接上的 select 语句到 return 值
- 如果 returned 值满足条件,转到步骤 #4,否则转到步骤 #5
- 进行更新
- 提交 SQLite 事务
如果两个线程 运行 相同的代码,是否有可能在其中一个线程中获得所谓的 "dirty read" 含义,在步骤 #3 和步骤 #4 之间,其他线程可以 运行 更新(步骤 #4)?
是的,这叫做隔离级别:https://www.sqlite.org/isolation.html
我最近看了很多书,现在我很困惑事务和锁定是如何工作的以及它们之间的关系。
使用 SQLite 时,想象一下以下流程:
- 开始 SQLite 事务
- 运行 SQLite 连接上的 select 语句到 return 值
- 如果 returned 值满足条件,转到步骤 #4,否则转到步骤 #5
- 进行更新
- 提交 SQLite 事务
如果两个线程 运行 相同的代码,是否有可能在其中一个线程中获得所谓的 "dirty read" 含义,在步骤 #3 和步骤 #4 之间,其他线程可以 运行 更新(步骤 #4)?
是的,这叫做隔离级别:https://www.sqlite.org/isolation.html