代码之家  ›  专栏  ›  技术社区  ›  The King

选择是否受DML干扰

  •  1
  • The King  · 技术社区  · 14 年前

    使用clean read(read committed)时。。。一个select查询会被另一个DML(Insert,Update,Delete)查询干扰吗?如果是,你能提供一些案例吗。我正在使用SQL Server 2005。

    下面的查询可能会产生不正确的数据。查询不使用任何连接,它只是基于某个creteria从单个表中获取数据。

    Select PracticeCode, AccountNo, ProcCd, Modifier , ChargeDos, Paid as Amt, CreatedDate,
           case When Paid > 0 then 'P' 
                  When Paid = 0 and WrittenOff = DueAmt then 'A'
                  Else 'O' 
           End as Status
         From Trn_Postings
         Where CreatedDate between @StartDateTime and @EndDateTime
                      and ManualOverride not in ('F','S','X','G','O')
    
    1 回复  |  直到 14 年前
        1
  •  1
  •   Joe Stefanelli    14 年前

    读取提交的隔离级别在行级别使用共享锁以避免读取脏数据。但是,由于锁定在行级别,其他行可能在事务完成之前更改,从而导致不可重复的读取或虚拟数据。

    请参阅上的Microsoft文档 SET TRANSACTION ISOLATION LEVEL 更多细节和 this blog post 举个很好的例子。

    推荐文章