Mr Cricket
Mr Cricket

Reputation: 5953

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.

Upvotes: 96

Views: 109415

Answers (5)

Regianni
Regianni

Reputation: 279

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

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

Upvotes: 1

Fusca Software
Fusca Software

Reputation: 720

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;

Upvotes: 1

Adam Porad
Adam Porad

Reputation: 14471

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

Upvotes: 183

Adam Porad
Adam Porad

Reputation: 14471

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.

Upvotes: 12

BradB
BradB

Reputation: 977

Try this:

SELECT NewId()

Upvotes: 29

Related Questions