发布网友 发布时间:2022-04-25 19:18
共3个回答
懂视网 时间:2022-04-08 10:13
一般用于此类语句中: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)
标签:
热心网友 时间:2022-04-08 07:21
这里的with()叫做语句提示,即告诉数据库引擎要以什么方式查询表追答with的用法有很多,你的例子中是提示,其他的具体分析吧
提示行锁with(rowlock) 提示使用ix_abc索引with(index(ix_abc))
热心网友 时间:2022-04-08 08:39
http://wenku.baidu.com/view/8e42e42bbd64783e09122be6.html