我正在尝试使用 rowlock 来防止某些行在运行时被更新,但问题是我在运行时根本无法使用这些表:
set transaction isolation level repeatable read;
go
begin try
begin transaction;
insert into tableB with(rowlock)
select * from tableA with(rowlock) where status = 1
commit transaction;
end try
begin catch
if xact_state() <> 0
begin
rollback transaction;
end
end catch;
当这个事务正在运行时,我为两个表运行了一个插入操作,他们都在等待它提交。我应该怎么做才能锁定某些行以进行读取和删除但保持表可用?
对于记录,选择结果数以万计的记录。这些表具有聚集的主键,并且状态列具有索引。