2013-05-20 37 views
1

我想在Sqlserver中獲取新插入的記錄的Id。我檢查了Scope_Identity(),但據說這是返回自動增量列的值。我用於Id的列是Guid。插入後我想要這個Guid列值。這應該如何實現?或者我必須編寫一個自定義的繁瑣函數來獲取新插入記錄的標識。如何在插入新行後獲取GUID值?

+3

我不明白您的問題。 guid在哪裏創建?無論是在您的客戶端代碼還是在數據庫中的存儲過程中,只需在創建它時使用該值即可。 –

+0

看看http://stackoverflow.com/questions/1509947/sql-server-scope-identity-for-guids – Sachin

+2

OUTPUT http://msdn.microsoft.com/en-us/library/ms177564(v=sql .90).aspx – bummi

回答

7

你可以嘗試使用OUTPUT,這將是像這樣的:

INSERT INTO ExampleTable (<Column1>, <Column2>, <Column3>) OUTPUT INSERTED.ID 
VALUES (<Value1>, <Value2>, <Value3>) 

此外,this question,對不同類型的身份選擇多了很多信息,你應該看看。

編輯

你會使用這個作爲一個普通標量:

var command = new SqlCommand("..."); 
Guid id = (Guid) command.ExecuteScalar(); 
+0

你會如何閱讀在C#中'OUTPUT INSERTED.ID'中返回的這個值? – Paul

+0

@Paul你可以像標量一樣使用它(它會返回一個值)。檢查我的編輯。 –

+0

啊,謝謝。我不知道'ExecuteScalar'可以返回除int之外的任何東西。所以你說你可以做一些事情,比如'Guid id =(Guid)command.ExecuteScalar();',因爲問題是特別要求如何返回'guid'。 – Paul