SCOPE_IDENTITY()、@@IDENTITY、IDENT_CURRENT()

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 --返回當前會話所有表中生成的最後一個標示值

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章