设为首页 加入收藏

TOP

关于sql中的with(nolock)
2015-11-21 01:31:21 来源: 作者: 【 】 浏览:0
Tags:关于 sql with nolock

?

SQL Server 中的 NOLOCK 到底是什么意思

一般用于此类语句中:select * from t with(NOLOCK)
nolock是不加锁查询,可以读取被事务锁定的数据,也称为脏读。
说明:
使当前会话的查询,不受其它会话的事务所阻塞。
但是这样做,就读取了其它事务的“修改后未提交的”数据。
也就是允许“READ UNCOMMITTED”

?

下面举例说明:

在sqlserver中打开一个窗口:

写下如下语句:

?

begin tran 
  update STUDENT set sname='111111' 
  waitfor delay '0:0:10'
  update STUDENT set sname='222222'
commit tran

?

?

在sqlserver中打开另一个窗口:

写下如下语句:

 select * from student with(nolock)
先执行第一个窗口,10秒内执行第二个窗口(最好2秒后,不要太快,因为第一个窗口执行需要一定的时间)

?

会查询到的结果是sname = '111111'

如果把第二个窗口的sql语句改为:

?

 select * from student
则,第二个窗口不会立即返回,他会等到第一个窗口执行完毕之后,再进行查询,返回结果 sname = '222222'

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇MongoDB初探系列之二:认识MongoD.. 下一篇关于SQL的几道小题详解

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: