Sql server 将输出插入到具有ROWLOCK的表中
我有一个临时表a,其中包含100K项,我需要将它们插入另一个表B中,因此我使用以下方法将它们分批插入表B中,以避免阻塞该表:Sql server 将输出插入到具有ROWLOCK的表中,sql-server,Sql Server,我有一个临时表a,其中包含100K项,我需要将它们插入另一个表B中,因此我使用以下方法将它们分批插入表B中,以避免阻塞该表: WHILE EXISTS (SELECT TOP 1 * FROM @A) BEGIN DELETE TOP (1000) TMP OUTPUT DELETED.FieldA, DELETED.FieldB INTO [dbo].[TableB] ([FieldA] ,[FieldB]) FROM @A TMP END 这可以正常工作
WHILE EXISTS (SELECT TOP 1 * FROM @A)
BEGIN
DELETE TOP (1000) TMP
OUTPUT DELETED.FieldA, DELETED.FieldB
INTO [dbo].[TableB] ([FieldA] ,[FieldB])
FROM @A TMP
END
这可以正常工作,但我想知道在插入表B时,是否有方法使用ROWLOCK指定表提示
像这样
WHILE EXISTS (SELECT TOP 1 * FROM @A)
BEGIN
DELETE TOP (1000) TMP
OUTPUT DELETED.FieldA, DELETED.FieldB
INTO [dbo].[TableB] WITH (ROWLOCK) ([FieldA] ,[FieldB])
FROM @A TMP
END
它现在不允许我这样做。您能告诉我们为什么要这样做吗?我正在尝试在插入到表时避免页面锁定。