我知道 Scope_Identity()
、Identity()
、@@Identity
和 Ident_Current()
全部获取身份列的值,但我很想知道其中的区别。
我遇到的部分争议是,应用于上述这些函数的范围是什么意思?
我还想要一个使用它们的不同场景的简单示例?
最佳答案
@@identity
函数返回在同一 session 中创建的最后一个身份。scope_identity()
函数返回在同一 session 和同一范围内创建的最后一个身份。ident_current(name)
返回为任何 session 中的特定表或 View 创建的最后一个标识。identity()
函数不用于获取身份,而是用于在select...into
查询中创建身份。
session 是数据库连接。范围是当前查询或当前存储过程。
scope_identity()
和 @@identity
函数不同的情况是,如果表上有触发器。如果您有一个插入记录的查询,导致触发器在某处插入另一条记录,则 scope_identity()
函数将返回查询创建的标识,而 @@identity
code> 函数将返回触发器创建的标识。
因此,通常您会使用 scope_identity()
函数。
关于sql - Scope_Identity()、Identity()、@@Identity 和 Ident_Current() 之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1920558/