开发者

How to generate a new Guid in stored procedure?

I currently have a stored procedure in which I want to insert new rows into a table.开发者_运维知识库

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

So the primary key 'id' is a Guid. I know how to create a new Guid in C# code but within the stored procedure I'm unsure how to generate the new Guids for the primary key values.


With SQL Server you can use the function NEWID. You're using C# so I assume that you're using SQL Server. I'm sure other database system have similar functions.

select NEWID()

If you're using Oracle then you can use the SYS_GUID() function. Check out the answer to this question: Generate a GUID in Oracle


Try this:

SELECT NewId()


You didn't ask about this in your question, but I think it's worth pointing out that using a GUID for a primary key is not always a good idea. While it's simple, it can affect performance when a GUID is used in an index. Have you considered using an Identity column that is an integer value instead?

Here are a couple of articles that might be helpful to read.

  • Performance Effects of Using GUIDs as Primary Keys (SQL Server Magazine)
  • Primary Keys: IDs versus GUIDs (Jeff Atwood)
  • The Cost of GUIDs as Primary Keys (Jimmy Nelson's article referenced by the two other articles)


In MySQL it is UUID(). so the query would be:

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

if you want to reuse the uuid you can do it like this:

set @id=UUID();
insert into cars
(id, Make, Model)
values(@id, "Ford", "Mustang");
select @id;


In the format of the question (spot the pedant!)

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜