我知道Scope_Identity()
、Identity()
、@@Identity
和Ident_Current()
都得到了标识列的值,但我很想知道它们之间的区别.
我所面临的部分争议是,适用于上述功能的范围是什么意思?
我也想举一个简单的例子,说明使用它们的不同场景?
我知道Scope_Identity()
、Identity()
、@@Identity
和Ident_Current()
都得到了标识列的值,但我很想知道它们之间的区别.
我所面临的部分争议是,适用于上述功能的范围是什么意思?
我也想举一个简单的例子,说明使用它们的不同场景?
@@identity
函数返回在同一会话中创建的最后一个标识.scope_identity()
函数返回在同一会话和同一作用域中创建的最后一个标识.ident_current(name)
返回在任何会话中为特定表或视图创建的最后一个标识.identity()
函数不用于获取标识,而是用于在select...into
查询中创建标识.会话是数据库连接.作用域是当前查询或当前存储过程.
scope_identity()
和@@identity
函数不同的一种情况是,如果你的桌子上有一个触发器.如果查询插入了一条记录,导致触发器在某处插入另一条记录,scope_identity()
函数将返回查询创建的标识,而@@identity
函数将返回触发器创建的标识.
所以,通常你会使用scope_identity()
函数.