mssql sqlserver nolock nowait关键字的用法区别


摘要:
下文将讲述nolock nowait关键字在数据查询中的应用区别

——————————————————
nolock:如何查询表被锁,那么将返回数据表的当前数据,容易产生脏读
nowait:如果查询表被锁,不返回结果,直接返回错误信息
——————————————————
以上两个关键字,在表被锁定时,都不能返回正确的结果,两个关键字的最大区别,就是一个可以返回数据,
一个直接返回错误信息。


例:

----建立原始数据
create table  A (keyId INT, info varchar(20))
GO
insert into  A (keyId,info) values(100,'maomao365.com')
 
GO
 
-----先打开三个连接
 
---连接1:开始事务锁定表
BEGIN TRAN
DELETE FROM a  WHERE  keyId  = 100 

--------------------------
 
---连接2:运行nowait关键字返回数据
 select keyId,info from A(nowait) where keyId =100
 ----输出--------------
已超过了锁请求超时时段。

---连接3:运行nolock关键字返回数据
 select keyId,info from A(nolocK) where keyId =100
 ---输出空数据----