如何在存储过程中生成新的Guid?

时间:2010-10-14 22:30:08

标签: sql sql-server stored-procedures

我目前有一个存储过程,我想在其中将新行插入表中。

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

所以主键'id'是Guid。我知道如何在C#代码中创建一个新的Guid,但在存储过程中,我不确定如何为主键值生成新的Guid。

有人可以帮帮我吗?

谢谢!

5 个答案:

答案 0 :(得分:165)

使用SQL Server,您可以使用函数NEWID。您正在使用C#,所以我假设您正在使用SQL Server。我确信其他数据库系统也有类似的功能。

select NEWID()

如果您使用的是Oracle,则可以使用SYS_GUID()功能。看看这个问题的答案:Generate a GUID in Oracle

答案 1 :(得分:28)

试试这个:

SELECT NewId()

答案 2 :(得分:12)

你在问题​​中没有问过这个问题,但我认为值得指出的是,使用GUID作为主键并不总是一个好主意。虽然很简单,但在索引中使用GUID时会影响性能。您是否考虑使用Identity column来代替整数值?

以下是一些可能有助于阅读的文章。

答案 3 :(得分: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;

答案 4 :(得分:0)

以问题的格式(发现学徒!)

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