scope_identity()和current_identity()之间有什么区别?

时间:2013-10-05 06:22:29

标签: sql-server

What is the difference between scope_identity() and current_identity()?

Scope_identity和current _identity都是相似的,它将返回表中生成的最后一个标识值。   Scope_Identity将返回当前在范围内的表中的标识值

这个问题的正确定义是什么?

2 个答案:

答案 0 :(得分:1)

  

IDENT_CURRENT类似于SQL Server 2000身份函数SCOPE_IDENTITY和@@ IDENTITY。所有三个函数都返回最后生成的标识值。

     

但是,在每个函数中定义last的范围和会话不同:

     
      
  • IDENT_CURRENT返回在任何会话和任何范围内为特定表生成的最后一个标识值。

  •   
  • @@ IDENTITY返回在所有范围内为当前会话中的任何表生成的最后一个标识值。

  •   
  • SCOPE_IDENTITY返回为当前会话中的任何表和当前范围生成的最后一个标识值。

  •   

Source

答案 1 :(得分:0)

@@ IDENTITY

它返回在所有范围内为当前会话中的任何表生成的最后一个标识值。

让我解释一下......假设我们在表上创建一个insert触发器,在另一个表中插入一行并生成一个标识列,然后@@ IDENTITY返回由trigger创建的标识记录。 SCOPE_IDENTITY

它返回为当前会话中的任何表和当前范围生成的最后一个标识值。

让我解释一下......假设我们在表上创建一个插入触发器,在另一个表中插入一行并生成一个标识列,然后SCOPE_IDENTITY结果不受影响但是如果触发器或用户定义的函数受到影响产生值的同一个表返回该身份记录,然后SCOPE_IDENTITY返回由触发器或用户定义的函数创建的身份记录。 IDENT_CURRENT

它返回在任何会话和任何范围内为特定表生成的最后一个标识值。

换句话说,我们可以说它不受范围和会话的影响,它只依赖于特定的表并返回在任何会话或范围中生成的表相关标识值。

找到 here