使用@@ identity而不是scope_identity的原因

Lan*_*her 11 sql-server sql-server-2005

在SQL Server 2005数据库上,我们的一位远程开发人员刚刚检查了对"select scope_identity"更改为"select @@ identity"的存储过程的更改.您是否知道为什么要在scope_identity上使用@@ identity?

Meh*_*ari 18

@@IDENTITY将返回当前会话发出的最后一个标识值.SCOPE_IDENTITY()返回当前会话和相同范围中的最后一个标识值.它们通常是相同的,但假设调用了一个触发器,它在当前语句之前的某处插入了一些内容.@@IDENTITY将通过INSERT触发器的语句返回标识值,而不是块的insert语句.除非他知道自己在做什么,否则这通常是个错误.


Jam*_*sen 12

这是一个可以帮助区分它们的链接

好像:

  • IDENTITY - 连接上的最后一个标识
  • SCOPE_IDENTITY - 您明确创建的最后一个身份(排除触发器)
  • IDENT_CURRENT('tablename') - 表中的最后一个标识,与范围或连接无关.