我正在尝试更新块和事务中的大表。
如果由于某种原因未更新column1,则此查询将无休止地运行。我在那里有另一个嵌套查询,它不一定返回一个值,所以一些column1在更新后保持为null。这使我的查询陷入无休止的循环。
如何指定“更新顶部”的位置?
提前致谢。
declare @counter int
declare @total int
declare @batch int
set @total = (SELECT COUNT(*) FROM table with(nolock))
set @counter = 0
set @batch = 1000
while (@counter < (@total/@batch) + 1)
begin
BEGIN TRANSACTION
set @counter = @counter + 1
Update TOP ( @batch ) table
SET column1 = 'something'
where column1 is null
Commit transaction
end