一个update的小故事

王朝学院·作者佚名  2016-05-26
窄屏简体版  字體: 小  |  中  |  大  |  超大  

一个update的小故事偶尔测试了一段小代码,写个循环

if object_id('tempdb..#TB') is not null drop table #TBgocreate table #TB( ID int)insert into #TB (ID)select 1union allselect 2union allselect 3union allselect 4union allselect 5--代码1declare @i int set @i = 1while @i < 5begin update #TB set ID = ID,@i = @i + 1 select @iend

--代码2set @i = 1while @i < 5begin update #TB set ID = ID set @i = @i + 1 select @iend

本来我觉得2段代码是一致的。都是执行了5次,那么@i = 6

但实际上,代码2是符合上述情况,执行了5次,@i = 6

但代码1 却只是执行了1次,@i = 6

对于这种情况,我只能猜测是update本身的机制。对于代码1,每一条影响记录,那么便执行一次@i = @i + 1。所以在一次循环里面就执行了5次,达到了while的阀值,跳出循环。

而对于代码2,则没有这个限制,顺序执行。

当然这只是个人猜想,还请各位指导。

这么一个简单的语句,一个不留神都踩坑,看来Sql Server里面的故事真不少啊

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航