sql serve可以使用分段事务,更新50万数据改为分批更新的话,就可以了。
当 SET XACT_ABORT 为 OFF 时,有时只回滚产生错误的 Transact-SQL 语句,而事务将继续进行处理。如果错误很严重,那么即使 SET XACT_ABORT 为 OFF,也可能回滚整个事务。OFF 是默认设置。
SET XACT_ABORT OFF
begin transaction t1 --开始一个事务t1
update a set x=1 where x is null --更新为值1
save transaction t2 --保存事务点t2
update b set y=2 where y is null --更新为值2
if @@error<>0 --判断有无错误
rollback transaction t2 --如果有,回滚到事务点t2
commit transaction t1 --提交事务t1
楼主可以看下SQL 分段事务。