一个update的小故事
2016-05-05 17:22
239 查看
偶尔测试了一段小代码,写个循环
本来我觉得2段代码是一致的。都是执行了5次,那么@i = 6但实际上,代码2是符合上述情况,执行了5次,@i = 6 但代码1 却只是执行了1次,@i = 6对于这种情况,我只能猜测是update本身的机制。对于代码1,每一条影响记录,那么便执行一次@i = @i + 1。所以在一次循环里面就执行了5次,达到了while的阀值,跳出循环。而对于代码2,则没有这个限制,顺序执行。 当然这只是个人猜想,还请各位指导。这么一个简单的语句,一个不留神都踩坑,看来Sql Server里面的故事真不少啊
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里面的故事真不少啊
相关文章推荐
- 行大小计算测试
- Sql Server 2008R2 遇到了BCP导入各种中文乱码的问题
- 简析一下SQL Server里面Fast_Forword 和 SRROLL 的区别
- Filestream 使用简单步骤
- 将一列包含多个ID拆分多行
- Sql Server 添加外部程序集基本操作
- 使用scrapy的定制爬虫-第三章-爬虫的javascript支持
- IDENT_CURRENT ,@@identity,SCOPE_IDENTITY() 之间对比
- RestFul简介以及在springmvc中的应用
- 页面渲染——简化paint复杂程度和区域
- python实现Kmeans文本聚类,通过PCA降维和Matplotlib显示聚类3d三维图像
- 小括号与花括号小括号与花括号
- 面向对象思想的理解
- mysql自动增长的有关问题,怎么恢复从1开始
- 截取文本,区分中英文字符,中文算两个长度,英文算一个长度
- 关于linux下的分号
- js中typeof只能判断基础类型。
- C语言中数据类型之间怎样进行强制转换?
- 大数据学习笔记1
- 【HUSTOJ】1044: 字母三角形