mssql sqlserver @@identity生成数值错乱的异常分析


摘要:
下文讲述sqlserver中使用@@identity获取流水列不准的异常现象,如下所示:
实验环境:sql server 2008 R2


最近发现程序中使用@@identity返回标识列不准的异常现象,如下:

在存储过程中,对表进行insert插入操作后,立即使用@@identity获取标识列信息,但是的返回的标识值一直都不对。

但是测试发现,其它表上采用@@identity可以获取相关信息,
通过多方检查表,才发现表上有触发器@@identity返回的为触发器的标识信息。

解决方法:
在存储过程中使用系统函数scope_identity(table_name)获取指定表的最后一次标识列信息,完美解决此异常