一直以来都是使用@@identity来获得最后一个插入到表的记录的identity值,最近发现这种方法在某种情况是不可靠的,先来看看两个概念
作用域:在SQLSERVER作用域就是一个模块-存储过程,触发器,函数或批处理
会话: 一个用户连接产生的所有上下文信息(online book找不到会话的概念,参照会话上下文概念而写)
相同点:都是返回最后插入的标识值
不同点:
@@identity :返回当前会话最后一个标识值,不限于特定的作用域 ;
ident_current('tablename'):返回任何会话,任何作用域中的指定表中生成的最后一个标识值 ;
scope_identity :返回当前会话当前作用域任何表生成的最后一个标识值 。
相关文章
- SCOPE_IDENTITY()和 SELECT @@IDENTITY 的用法
- SQL获取最后插入的ID值SCOPE_IDENTITY、IDENT_CURRENT 和 @@IDENTITY的比较
- sql server获取标识,获取最后ID IDENT_CURRENT、IDENTITY、SCOPE_IDENTITY区别
- SQL Server返回最后一个标识值的三个函数:IDENT_CURRENT、@@IDENTITY、SCOPE_IDENTITY
- SQL Server返回最后一个标识值的三个函数:IDENT_CURRENT、@@IDENTITY、SCOPE_IDENTITY
- @@IDENTITY与SCOPE_IDENTITY() 及IDENT_CURRENT 的区别
- SQL Server返回最后一个标识值的三个函数:IDENT_CURRENT、@@IDENTITY、SCOPE_IDENTITY
- [MSSQL]SCOPE_IDENTITY,IDENT_CURRENT以及@@IDENTITY的区别
- @@IDENTITY与SCOPE_IDENTITY的用法
- PostgreSQL三种自增列sequence,serial,identity的用法区别