2012年4月3日 星期二

取得Identity的方法:@@IDENTITY, SCOPE_IDENTITY(), IDENT_CURRENT()

關於取得SQL Server的IDENTITY(識別值),有以下三種方法(可點hyperlink連到MSDN看明細)

上面三種用法也不太一樣
我在寫stored procedure的時候
若需要寫入的資料是master-detail的話
比較常用的是@@IDENTITY
在寫入master之後
可用下面語法來取得寫入master Table的IDENTITY後,再寫入Detail Table
 DECLARE  @TableIdentity  BIGINT


SET @TableIdentity  = @@IDENTITY


若是除了寫入master-detail的table之外
還需要寫入log檔的table
那麼我會用下面語法來取得該Table最後的一筆IDENTITY
再將這個IDENTITY寫入到log檔


SET @TableIdentity  = IDENT_CURRENT('TableName')


因為master-detail有可能會寫入失敗
若使用@@IDENTITY,則會取到null值
而使用IDENT_CURRENT(),會取得原本應該產生的IDENTITY



沒有留言:

張貼留言