小编典典

Scope_Identity(),Identity(),@@ Identity和Ident_Current()有什么区别?

sql

我知道Scope_Identity()Identity()@@Identity,并且Ident_Current()都得到标识列的值,但我很想知道其中的差别。

我遇到的部分争议是它们在适用于以上这些功能时的范围是什么意思?

我还喜欢使用它们的不同场景的简单示例吗?


阅读 255

收藏
2021-05-05

共1个答案

小编典典

  • @@identity函数返回在同一会话中创建的最后一个标识。
  • scope_identity()函数返回在同一会话和相同作用域中创建的最后一个标识。
  • ident_current(name)返回的任何会议的特定表或视图中创建的最后一个标识。
  • identity()函数不用于获取身份,而是用于在select...into查询中创建身份。

会话是数据库连接。范围是当前查询或当前存储过程。

一种情形的scope_identity()@@identity功能的不同,就是如果你有在桌子上的触发器。如果您有插入记录的查询,导致触发器在某处插入另一条记录,则该scope_identity()函数将返回查询创建的标识,而该@@identity函数将返回由触发器创建的标识。

因此,通常您会使用该scope_identity()功能。

2021-05-05