SqlServer中用@@IDENTITY取最新ID不准的问题
来源:互联网 发布:递推最小二乘法 知乎 编辑:程序博客网 时间:2024/04/29 20:18
一个网友问我一个关于@@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)函数和去除触发器。
- 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
- C语言的函数
- SDL以及扩展库的交叉编译过程简介
- sqlServer 链接 oracel 建立DBlink(未完)
- 求助:Note: log switch off, only log_main and log_events will have logs!
- CentOS 6.2上安装cgdb
- SqlServer中用@@IDENTITY取最新ID不准的问题
- jQuery工作原理解析以及源代码示例
- linux内核SMP负载均衡浅析
- A. Cows and Primitive Roots
- How to Identify Blocking Problems with SQL Profiler
- Ubuntu 下jdk的环境变量配置(解决了重启电脑后失效的问题!)
- 编译常用环境变量
- c#用reflector产生的错误代码对照
- ETL系列专题6——Load之FactLoad