[转]IDENT_CURRENT、SCOPE_IDENTITY、@@IDENTITY 差異對照表
本文转自:http://www.dotblogs.com.tw/hunterpo/archive/2009/09/04/10421.aspx
IDENT_CURRENT、SCOPE_IDENTITY 和 @@IDENTITY 是類似的系統函數,都會傳回最後插入的識別值,但是各函數定義的範圍 (Scope) 和工作階段 (Session) 各不同,以下摘自 SQL Server 2005 線上叢書的說明:
- IDENT_CURRENT 會傳回在任何工作階段和任何範圍中,產生給特定資料表 (叫用函數時指定) 的最後一個識別值。
- SCOPE_IDENTITY 會傳回在目前工作階段以及目前範圍中,任何資料表產生的最後一個識別值。
- @@IDENTITY 會傳回所有範圍的目前工作階段中,任何資料表所產生的最後一個識別值。
整理成對照表來看應該會比較清楚,順便以後回頭查找的時候可以快速回憶:
函數 | 工作階段 (Session) | 範圍 (Scope) | 資料表 (table) | 傳回 NULL 的情況 |
---|---|---|---|---|
IDENT_CURRENT | any | any | specific |
|
SCOPE_IDENTITY | current | current | any |
|
@@IDENTITY | current | all | any |
|
上面的速查表,條列出這三個系統函數的不同之處,至於更詳細的說明及範例,線上叢書裡寫得很完整,就請大家自行查閱。
參考資料: