IDENT_CURRENT(tbname) 是看表对象。所以没有受作用域限制。
SCOPE_IDENTITY() 受作用域限制。同一个会话里面不同作用域也会有差异
@@IDENTITY 受会话限制。
如果多线程写入数据库的话,获取某个会话的自增列的值,可以使用SCOPE_IDENTITY() 或者@@IDENTITY,不能使用IDENT_CURRENT(tbname)
insert into [dbo].[ttttt]
select 'aaaa'
select 'aaaa'
select SCOPE_IDENTITY(),IDENT_CURRENT('[ttttt]'),@@identity
--------------------------------------- --------------------------------------- ---------------------------------------
36 37 36
(1 行受影响)
由于其他会话插入了一条数据,因此IDENT_CURRENT('[ttttt]')多了1