Sql Service Insert時返回插入的主鍵

在很多情況下Sql Service 插入後需要獲取剛插入的主鍵,以便後期操作,但是怎麼樣快捷的獲取又是一個問題。

比如我有一個表RM_Keywords

內包含字段有ID,MetaID,ResNoID,Word。其中ID是數據庫自動生成的 new GUID

我需要在插入MetaID,ResNoID,Word後返回。

我使用的方法爲在values前拼接 output Inserted.主鍵的方式,sql語句如下

insert into RM_Keywords(MetaID,ResNoID,Word)
output inserted.ID values ('2F468F5F-B92D-CD06-8CE6-ADB10E5A9687','C587BA7F-6193-F1B2-5507-6C0B14DF26FF','測試數據')

output 是sql server2005的新特性,可以從數據修改語句中返回輸出,可以看作是“返回結果的DML”

2005之後 Insert,Delete,Update語句 均支持Output語句。

在Output語句中可以引用inserted和deleted。使用方法同觸發器類似。

該方法最大弊端就是需要指定主鍵。output Inserted.要返回的值。


網上還有另外一種方式

output @@identity 

insert into RM_Keywords(MetaID,ResNoID,Word)
output @@identity  values ('2F468F5F-B92D-CD06-8CE6-ADB10E5A9687','C587BA7F-6193-F1B2-5507-6C0B14DF26FF','測試數據')
通過這種方式返回插入的主鍵值。@@identity是記錄上條語句的標識,是系統內置的一個全局變量值。

(但在沒有唯一標識的情況下會如何我還沒有測試)



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