2010-10-14 33 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