How to generate a new Guid in stored procedure?

前端 未结 5 792
时光说笑
时光说笑 2021-02-03 16:16

I currently have a stored procedure in which I want to insert new rows into a table.

insert into cars
(id, Make, Model)
v         


        
相关标签:
5条回答
  • 2021-02-03 17:01

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

    insert into cars
      (id, Make, Model)
      values(NEWID(), "Ford", "Mustang")
    
    0 讨论(0)
  • 2021-02-03 17:10

    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

    0 讨论(0)
  • 2021-02-03 17:14

    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;
    
    0 讨论(0)
  • 2021-02-03 17:20

    Try this:

    SELECT NewId()
    
    0 讨论(0)
  • 2021-02-03 17:22

    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)
    0 讨论(0)
提交回复
热议问题