SQL循环更新
今天在处理历史数据的更新,需要更新100W以上的数据,开始的时候,尝试直接写SQL 语句更新,后来发现这种更新会导致死锁,最终导致更新失败。于是⾃⼰采⽤SQL 循环更新的⽅式对数据进⾏更新,避免了数据死锁的问题。脚本如下:
DECLARE @n AS INT      --数据的循环次数
DECLARE @rows AS INT    --次更新的⾏数
SET @rows=5000
SET @n=(SELECT  COUNT(*) FROM dbo.EmployeeCompany WHERE ISNULL(InitialWpctgy,'')='')/@rows+1
WHILE @n>0
BEGIN
UPDATE t SET InitialWpctgy=ISNULL(wpctgy,''),InitialTrydat=ISNULL(trydat,'')
FROM  dbo.EmployeeCompany t WHERE ISNULL(InitialWpctgy,'')=''
AND emplid IN  (SELECT TOP (@rows) emplid  from EmployeeCompany e WHERE ISNULL(InitialWpctgy,'')='')
SET @n=@n-1
PRINT @n
END
>批量更新sql语句

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。