码迷,mamicode.com
首页 > 数据库 > 详细

关于sql中的with(nolock)

时间:2017-06-18 10:41:30      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:会话   sel   span   set   ted   display   tle   打开   说明   

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‘



关于sql中的with(nolock)

标签:会话   sel   span   set   ted   display   tle   打开   说明   

原文地址:http://www.cnblogs.com/slgkaifa/p/7043448.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!