2010-07-21 162 views

回答

1

不,它不是冬眠特定的。

简答:交易是“工作原子单位”,具有一致的世界观。一旦交易完成,受保护的“视图”需要通过世界观(COMMITTTED)来纠正 - 或者在只读交易的情况下,可以简单地解除一致的视图(只需要在交易过程中一致)。

较长的答案:有很多不同类型的事务(READ UNCOMMITTED,READ COMMITTED,SERIALIZABLE,REPEATABLE READ等)影响细节。

Wiki: Database TransactionIsolation (DBMS) - 后者需要几个链接点击,才能找到:-)

想象一下很快做作顺序,A和B表示使用DB不同的演员和每一个动作在它自己的运行单关闭隐性交易(而不是其他):

  1. 一个在用户列表中读取
  2. 乙删除用户(以及所有相关的数据)
  3. A获得每个用户的信息(使用之前获取的信息)。但是,至少有一个用户不再存在。不知怎的,更好地处理它。

请参阅隔离wiki文章的“示例查询”部分。

+0

对,但是如果一个服务器操作正在执行单个读操作,那么当写并发操作没有正确类型的事务隔离时,不会发生未提交的读操作类型错误? – hvgotcodes 2010-07-21 23:32:19

+0

@hvgotcodes我会对我先前的评论进行一些评估。如果您只是在SQL Server *中进行单一读取,则不必担心事务,因为您将自动处于隐式事务中。 – 2010-07-21 23:34:29