96

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.

KyleMit
  • 30,350
  • 66
  • 462
  • 664
Mr Cricket
  • 5,663
  • 5
  • 22
  • 14

5 Answers5

183

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

Community
  • 1
  • 1
Adam Porad
  • 14,193
  • 3
  • 31
  • 56
29

Try this:

SELECT NewId()
BradB
  • 977
  • 1
  • 8
  • 14
12

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.

Adam Porad
  • 14,193
  • 3
  • 31
  • 56
  • 1
    Yes, I agree with you. However I'm working on a database which someone else developed. All the previous tables used a Guid as a primary key so I'm just trying to be consistent. Though for new tables maybe I should evaluate on a case by case basis. Thanks for the info though. – Mr Cricket Oct 14 '10 at 23:25
1

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;
Fusca Software
  • 709
  • 6
  • 11
1

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

insert into cars
  (id, Make, Model)
  values(NEWID(), "Ford", "Mustang")
Regianni
  • 229
  • 1
  • 3
  • 11