在SQL Server 2005数据库上,我们的一位远程开发人员刚刚检查了对"select scope_identity"更改为"select @@ identity"的存储过程的更改.您是否知道为什么要在scope_identity上使用@@ identity?
@@IDENTITY
将返回当前会话发出的最后一个标识值.SCOPE_IDENTITY()
返回当前会话和相同范围中的最后一个标识值.它们通常是相同的,但假设调用了一个触发器,它在当前语句之前的某处插入了一些内容.@@IDENTITY
将通过INSERT
触发器的语句返回标识值,而不是块的insert语句.除非他知道自己在做什么,否则这通常是个错误.
这是一个可以帮助区分它们的链接
好像:
IDENTITY - 连接上的最后一个标识
SCOPE_IDENTITY - 您明确创建的最后一个身份(排除触发器)
IDENT_CURRENT('tablename') - 表中的最后一个标识,与范围或连接无关.