1
在while循环中是否需要显式事务?
SQL Server 2014: 我们有一个非常大的表(一亿行),我们需要在表上更新几个字段。 对于日志传送等,显然,我们也希望将其保持在很小的规模上。 如果让下面的代码运行一段时间,然后取消/终止查询,那么到目前为止已完成的工作将全部提交吗,还是我们需要添加显式的BEGIN TRANSACTION / END TRANSACTION语句以便我们可以随时取消? DECLARE @CHUNK_SIZE int SET @CHUNK_SIZE = 10000 UPDATE TOP(@CHUNK_SIZE) [huge-table] set deleted = 0, deletedDate = '2000-01-01' where deleted is null or deletedDate is null WHILE @@ROWCOUNT > 0 BEGIN UPDATE TOP(@CHUNK_SIZE) [huge-table] set deleted = 0, deletedDate = '2000-01-01' …