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

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

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

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

有人可以帮我吗?

谢谢!

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

 select NEWID() 

如果您使用的是Oracle,那么您可以使用SYS_GUID()函数。 看看这个问题的答案: 在Oracle中生成一个GUID

尝试这个:

 SELECT NewId() 

在你的问题中你没有问这个问题,但是我认为值得指出的是,使用GUID作为主键并不总是一个好主意。 虽然很简单,但是在索引中使用GUID时会影响性能。 你有没有考虑使用一个整数值的标识列呢?

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

  • 将GUID用作主键的性能影响 (SQL Server Magazine)
  • 主键:ID与GUID (Jeff Atwood)
  • GUID作为主键的成本 (另外两篇文章引用的Jimmy Nelson的文章)

在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;