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


93

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

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

因此,主键“ id”是Guid。我知道如何用C#代码创建新的Guid,但是在存储过程中,我不确定如何为主键值生成新的Guid。

Answers:




12

您没有在问题中问这个问题,但是我认为值得指出的是,对于主键使用GUID并不总是一个好主意。尽管很简单,但是当在索引中使用GUID时,它可能会影响性能。您是否考虑过使用作为整数值的Identity列

以下几篇文章可能对您有所帮助。


1
是的,我同意你的看法。但是我正在开发其他人开发的数据库。以前的所有表都使用Guid作为主键,因此我只是想保持一致。虽然对于新表,也许我应该根据具体情况进行评估。谢谢你的信息。
板球先生2010年

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;

两者都在mysql中进行了测试
Fusca Software

1

以问题的形式(当场学徒!)

insert into cars
  (id, Make, Model)
  values(NEWID(), "Ford", "Mustang")
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.