2010-10-14 76 views
70

我目前有一個存儲過程,我想在表中插入新行。如何在存儲過程中生成新的Guid?

insert into cars 
(id, Make, Model) 
values('A new Guid', "Ford", "Mustang") 

所以主鍵'id'是一個Guid。我知道如何在C#代碼中創建一個新的Guid,但在存儲過程中,我不確定如何爲主鍵值生成新的Guid。

有人可以幫我嗎?

謝謝!

回答

140

使用SQL Server,您可以使用函數NEWID。你正在使用C#,所以我假設你正在使用SQL Server。我相信其他數據庫系統也有類似的功能。

select NEWID() 

如果您使用的是Oracle,那麼您可以使用SYS_GUID()函數。檢查出這個問題的答案:Generate a GUID in Oracle

25

試試這個:

SELECT NewId() 
12

你沒有問這個在你的問題,但我認爲這是值得指出的是使用GUID的主鍵是並不總是一個好主意。雖然它很簡單,但在索引中使用GUID時會影響性能。你有沒有考慮使用一個整數值的Identity column呢?

以下是一些可能有助於閱讀的文章。

+0

是的,我同意你的看法。但是我正在開發一個別人開發的數據庫。所有以前的表格都使用了Guid作爲主鍵,所以我只是試圖保持一致。儘管對於新表格,我應該根據具體情況進行評估。謝謝你的信息。 – 2010-10-14 23:25:04

1

在MySQL中是UUID()。 所以查詢將是:

insert into cars 
(id, Make, Model) 
values(UUID(), "Ford", "Mustang") 

,如果你想重用你可以做這樣的uuid:

set @id=UUID(); 
insert into cars 
(id, Make, Model) 
values(@id, "Ford", "Mustang"); 
select @id; 
+0

都在mysql中測試過 – 2017-01-25 15:09:01