1
我试图使用ROWLOCK,以防止某些行,而它的运行被更新,但问题是,我不能在所有在运行此使用的表: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;
我跑当这个事务正在运行并且他们都等待它提交时这两个表的插入。我应该怎么做才能锁定某些行以进行读取和删除操作,但保持表格可用?
对于记录,选择结果成千上万的记录。这些表具有群集主键,状态列具有索引。
阅读有关锁升级的此MSDN文章:http://msdn.microsoft.com/en-us/library/ms184286.aspx。特别是:“数据库引擎不会将行锁或键范围锁升级为页锁,但将它们直接升级为表锁”,并且存在锁升级启动的阈值(~5000锁) – AdaTheDev 2011-02-04 12:29:22
可以'当这个运行时,你是否要插入到TableA中? – 2011-12-14 23:48:01