SqlServer中用@@IDENTITY取最新ID不准的问题
来源:互联网 发布:php 百度网盘 编辑:程序博客网 时间:2024/05/04 17:40
最近遇到了一个SqlServer中用@@IDENTITY取最新ID不准的问题,经过在网上的一番查找,找到了如下资料,略作记录:
"一个网友问我一个关于@@IDENTITY的问题。他的数据库中有一个存储过程,有 insert语句,然后马上就用SELECT @@IDENTITY取刚插入的ID值,通常这是没有问题的,但是问题是ID实际上已经达到了100多万了,而 SELECT @@IDENTITY 返回的只有很小的值(才30多),令人费解。
我开始也不太明白,问他先别管@@IDENTITY,新插入记录,ID是多少。他说ID是100多万那么大的数。不是才几十那么小。我帮他分析可能性,是不是identity到了最大限,且identity最大是2的64次方。他说int 最大值是 2,147,483,647,他的ID离溢出还早呢, 但是 return @@IDENTITY 就是 很小的值(只有几十)。我然后又帮他分析道,是不是ID的值被重置过?他说不是,他说现在新插入的 id 就是 170多万。说到这里,我了解了一点了。我建议他用scope_identity(table_name)函数来取指定表的IDENTITY。我们以前有过经验,@@IDENTITY和IDENTITY_CURRENT()都不是很理想,因为它们会受当前表的范围影响。通常有触发器就会引起@@IDENTITY不能正确地取值,IDENTITY_CURRENT()也是如此。幸好有scope_identity(table_name)函数。在这种情况下就只能用这个。这时他才想起来,他的表有触发器。呵呵,迟了点。我建议他最好不要用触发器。能避免就避免。他说这个触发器是可以用别的方式代替的。他会试一下用scope_identity(table_name)函数和去除触发器。"
资料来源:http://www.cnblogs.com/mikelij/archive/2010/05/31/1779895.html
- SqlServer中用@@IDENTITY取最新ID不准的问题
- SqlServer中用@@IDENTITY取最新ID不准的问题
- SqlServer中用@@IDENTITY取最新ID不准的问题
- id分组查询取最新的一条!
- cacti解决监控千兆取值不准问题的方法
- SQL 获取最新ID,scope_identity() ,@@identity,ident_current
- 一个sqlserver中用到的函数,用来取拼音
- 仓库不准的问题
- SetTimer不准的问题
- SetTimer不准的问题
- 关于sqlserver 主键设置了identity的问题
- SQLServer获取最后插入的ID值SCOPE_IDENTITY、IDENT_CURRENT 和 @@IDENTITY的比较
- SqlServer分批取数与相关ID的数据表
- sqlserver中identity的使用
- viewDidLoad尺寸不准的问题
- sql 分组取最新的数据sqlserver巧用row_number和partition by分组取top数据
- sqlserver identity
- sqlserver identity
- NAT映射和代理服务器
- Android开发,Kotlin的了解与学习(三)-----流程控制语句
- Win8/8.1删除文件夹没有权限怎么办?管理员权限
- USB composite 设计
- HTML5本地储存实现--简易留言板
- SqlServer中用@@IDENTITY取最新ID不准的问题
- PB PB连接oracle提示成功后,双击tables却看不到表的问题。
- Iterator的remove()和Collection的remove()
- Java抽象类和接口的区别
- Java实现手动分页
- Yarn运行Job报错:container is running beyond virtual memory limits
- ConcurrentHashMap源码实现
- 【设计模式】代理模式Proxy---动态代理
- description方法