-- 创建示例数据 USE tempdb; GO CREATE TABLE dbo.tb( id int PRIMARY KEY ); INSERT dbo.tb SELECT 1 UNION ALL SELECT 2
-- 查询窗口 - 1 -- 加锁 -- SQL Server 的 SELECT 锁, 需要配合事务, 及特定的提示才能将锁保持 BEGIN TRAN;
SELECT * FROM dbo.tb WITH(UPDLOCK, ROWLOCK) WHERE id = 1
-- 显示锁信息 EXEC sp_lock @@SPID GO --ROLLBACK TRAN --DROP TABLE dbo.tb
-- 查询窗口 - 2 -- 不同的记录, 可以加锁 SELECT * FROM dbo.tb WITH(UPDLOCK) WHERE id = 2
-- 可以普通查询 SELECT * FROM dbo.tb WHERE id = 1 GO
-- 尝试锁定同一条记录需要等待 SELECT * FROM dbo.tb WITH(UPDLOCK) WHERE id = 1