我目前有一个存储过程,我想在表中插入新行。如何在存储过程中生成新的Guid?
insert into cars
(id, Make, Model)
values('A new Guid', "Ford", "Mustang")
所以主键'id'是一个Guid。我知道如何在C#代码中创建一个新的Guid,但在存储过程中,我不确定如何为主键值生成新的Guid。
有人可以帮我吗?
谢谢!
我目前有一个存储过程,我想在表中插入新行。如何在存储过程中生成新的Guid?
insert into cars
(id, Make, Model)
values('A new Guid', "Ford", "Mustang")
所以主键'id'是一个Guid。我知道如何在C#代码中创建一个新的Guid,但在存储过程中,我不确定如何为主键值生成新的Guid。
有人可以帮我吗?
谢谢!
使用SQL Server,您可以使用函数NEWID。你正在使用C#,所以我假设你正在使用SQL Server。我相信其他数据库系统也有类似的功能。
select NEWID()
如果您使用的是Oracle,那么您可以使用SYS_GUID()
函数。检查出这个问题的答案:Generate a GUID in Oracle
试试这个:
SELECT NewId()
你没有问这个在你的问题,但我认为这是值得指出的是使用GUID的主键是并不总是一个好主意。虽然它很简单,但在索引中使用GUID时会影响性能。你有没有考虑使用一个整数值的Identity column呢?
以下是一些可能有助于阅读的文章。
在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中测试过 – 2017-01-25 15:09:01
是的,我同意你的看法。但是我正在开发一个别人开发的数据库。所有以前的表格都使用了Guid作为主键,所以我只是试图保持一致。尽管对于新表格,我应该根据具体情况进行评估。谢谢你的信息。 – 2010-10-14 23:25:04