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")
Success story sharing