[轉]IDENT_CURRENT、SCOPE_IDENTITY、@@IDENTITY 差異對照表

本文轉自:http://www.dotblogs.com.tw/hunterpo/archive/2009/09/04/10421.aspxspa

 

IDENT_CURRENT、SCOPE_IDENTITY 和 @@IDENTITY 是類似的系統函數,都會傳回最後插入的識別值,可是各函數定義的範圍 (Scope)工做階段 (Session) 各不一樣,如下摘自 SQL Server 2005 線上叢書的說明:  blog

  • IDENT_CURRENT 會傳回在任何工做階段和任何範圍中,產生給特定資料表 (叫用函數時指定) 的最後一個識別值。
  • SCOPE_IDENTITY 會傳回在目前工做階段以及目前範圍中,任何資料表產生的最後一個識別值。
  • @@IDENTITY 會傳回全部範圍的目前工做階段中,任何資料表所產生的最後一個識別值。

整理成對照表來看應該會比較清楚,順便以後回頭查找的時候能夠快速回憶:  ci

函數 工做階段 (Session) 範圍 (Scope) 資料表 (table) 傳回 NULL 的情況
IDENT_CURRENT any any specific
  • 發生錯誤,或呼叫者沒有檢視物件的權限。
  • 在空白資料表或沒有識別資料行的資料表上叫用。
SCOPE_IDENTITY current current any
  • 在範圍內的識別資料行執行任何 INSERT 陳述式以前叫用。
@@IDENTITY current all any
  • 執行的陳述式並未影響任何含有識別資料行的資料表。

上面的速查表,條列出這三個系統函數的不一樣之處,至於更詳細的說明及範例,線上叢書裡寫得很完整,就請你們自行查閱。  get


參考資料:  io

相關文章
相關標籤/搜索