SQL Server 中,可以使用 SCOPE_IDENTITY()、 @@IDENTITY 、 IDENT_CURRENT() 來取得最後插入記錄的值值,它們的區別在於:
SCOPE_IDENTITY() 返回插入到同一作用域中的 IDENTITY 列內的最後一個 IDENTITY 值。一個作用域就是一個模塊——存儲過程、觸發器、函數或批處理。因此,如果兩個語句處於同一個存儲過程、函數或批處理中,則它們位於相同的作用域中。
直接使用 select SCOPE_IDENTITY()
@@IDENTITY 返回在當前會話的所有表中生成的最後一個標識值,沒有參數,直接使用 select @@IDENTITY
IDENT_CURRENT() 返回爲任何會話和任何作用域中的指定表最後生成的標識值, 其中的參數,是表名,例如 select IDENT_CURRENT('TRole')
-------------------------------------------------------------
2.SCOPE_IDENTITY()是絕對可靠的,可以用在存儲過程中,連觸發器也不用建,沒併發衝突
SELECT IDENT_CURRENT('TableName') --返回指定表中生成的最後一個標示值
SELECT IDENT_INCR('TableName')--返回指定表的標示字段增量值
SELECT IDENT_SEED('TableName')--返回指定表的標示字段種子值
返回最後插入記錄的自動編號
SELECT IDENT_CURRENT('TableName')
返回下一個自動編號:
SELECT IDENT_CURRENT('TableName') + (SELECT IDENT_INCR('TableName'))
SELECT @@IDENTITY --返回當前會話所有表中生成的最後一個標示值