有关sql server查询语句中锁的用法,SqlServer查询语句锁怎么用,SQL语句中 with nolock 除了不锁表外,是否能读其他锁住的数据,详见文中实例教程。
Sql Server查询语句锁怎么用?
问题:
sql语句中 with nolock 除了不锁表外,是否能读其他锁住的数据?
解答:
with nolock 除了本身不锁表(不加任何锁) 也不会受其他的已存在的锁影响,锁住的行数据也照样读。
总结下其他的 sqlserver 中的 with锁级别
with nolock:无锁
with holdlock:挂一个保持锁
with updlock:挂一个更新锁
with xlock:挂一个排他锁
注意,with nolock 是不能用于update,delete insert 这种更新语句。即with nolock 只能用于select。
例如,
update dbo.test with(NOLOCK) set username='wokofo' --语句是错误的
弹回:
INSERT、UPDATE、DELETE 或 MERGE 语句的目标表不允许使用 NOLOCK 和 READUNCOMMITTED 锁提示。
例子:
select top 10 * from dbo.test with(NOLOCK)
select top 10 * from dbo.test with(HOLDLOCK)
select top 10 * from dbo.test with(XLOCK)
select top 10 * from dbo.test with(UPDLOCK)
update dbo.test with(HOLDLOCK) set username='wokofo'
update dbo.test with(XLOCK) set username='wokofo'
update dbo.test with(UPDLOCK) set username='wokofo'