码迷,mamicode.com
首页 > 其他好文 > 详细

一个update的小故事

时间:2014-11-28 00:58:24      阅读:287      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   ar   color   sp   on   div   log   

偶尔测试了一段小代码,写个循环

if object_id(tempdb..#TB) is not null
    drop table #TB
go

create table #TB
(
    ID int
)

insert into #TB (ID)
select 1
union all
select 2
union all
select 3
union all
select 4
union all
select 5

--代码1
declare @i int 
set @i = 1
while @i < 5
begin
    update #TB set ID = ID,@i = @i + 1
    select @i
end
--代码2
set @i = 1 while @i < 5 begin update #TB set ID = ID
   set @i = @i + 1 select @i end



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

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

 

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

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

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

 

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

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

 

一个update的小故事

标签:style   blog   io   ar   color   sp   on   div   log   

原文地址:http://www.cnblogs.com/Gin-23333/p/4127453.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!