我有两个表,比如说Main,事务表
主要:
mainID Name Active
1 sharath 1
2 kiran 0
3 ashish 1
交易:
TransID TransType status MainID IsActive
101 D 22 1 0
102 R 27 2 1
103 R 32 2 1
104 D 11 1 0
105 R 43 3 0
这些更新语句更可取:
1)
Update TR
set status = 0,
Isactive = 0
from Transaction TR
inner join main MN with(nolock) on MN.MainID = TR.MainID
where MN.Isactive = 0
2)
Update TR
set status = 0,
Isactive = 0
from Transaction TR
inner join main MN on MN.MainID = TR.MainID
where MN.Isactive = 0
在第一个查询中,我使用Main进行了内连接,并使用了with(nolock)
,因为我想更新那些Isactive = 0
在第二个查询中,没有使用with(nolock)
我写了更新语句。
哪一个是可取的,n将来也会做更新而没有任何错误。
答案 0 :(得分:1)
在SELECT中使用NOLOCK将返回数据,这可能是脏的。当我们确定脏数据没问题时,我们可以使用此表提示快速获得结果。但是我没有看到为什么人们应该在DML上使用NOLOCK的原因,因为脏数据可能会被写入db并且也会被提交。 主表中未提交的事务可能会将脏数据引入Transaction表。