2011-07-13 53 views
0

我使用SQL Server 2008,在我所有的表的GUID,並使用一些存儲過程。我想知道是否有辦法輸出當前正在更新的GUID?更新時使用OUTPUT for SQL Server 2008?

我知道有低於代碼我在其他程序使用:

output inserted.* 
output deleted.* 

不過,我有一個是一個,如果空的insert,否則,更新的情況。我想知道在每種情況下使用了哪個GUID。我已經聽到了另一種方法來創建另一個表,將表中的值設置爲剛剛更新的GUID,然後從新創建的表中選擇值,但這看起來非常多餘且不必要。任何解決方法?

謝謝!

回答

1

你有NEWID()作爲缺省的列或你生成代碼中的一個GUID當你插入/更新?

如果你有一個NewID()的缺省值,那麼沒有辦法獲取最後插入/更新的數據,如果它是你可以使用@@ IDENTITY獲得最後插入的ID的身份。

只有這樣我才能想到做你想做的就是從列中取出默認值,在你的代碼中插入NewID()並記住它是什麼。

+0

那麼它適用於插入的值(這個答案與你使用GUIDS作爲PK的假設製造)。我仍然使用GUID行的缺省值作爲NEWID(),它工作正常。但是,更新一不會傳回GUID。對我來說不是一個大問題,但確實很不方便。 – ImGreg

+0

GUID是PK嗎?如果是這樣,那麼您在更新時已經知道它。否則,只需添加代碼以根據相同的表/ where子句選擇guid來獲取剛剛更新的那個。 – Treborbob