【问题标题】:How to generate a Guid in SQL Server?如何在 SQL Server 中生成 Guid?
【发布时间】:2026-02-16 18:20:09
【问题描述】:

我需要在 SQL 中创建一个 ID 作为 Guid(无身份)我该怎么做?我将 Id 定义为 uniqueidentifier 但在 Db 中保存的是 00000000-0000-0000-0000-000000000000

【问题讨论】:

标签: sql sql-server


【解决方案1】:

试试这个:

SELECT NEWID()

希望对你有帮助

【讨论】:

    【解决方案2】:

    什么是 GUID? GUID 是一种 16 字节的二进制 SQL Server 数据类型,它在表、数据库和服务器之间是全球唯一的。术语 GUID 代表全局唯一标识符,可与 UNIQUEIDENTIFIER 互换使用。

    在 SQL Server 中创建 GUID,使用 NEWID() 函数,如下所示:

    SELECT NEWID()
    

    多次执行上面这行SQL,每次都会看到不同的值。这是因为 NEWID() 函数在您执行时会生成一个唯一值。

    要声明 GUID 类型的变量,使用的关键字是 UNIQUEIDENTIFIER,如下面的脚本中所述:

    DECLARE @UNI UNIQUEIDENTIFIER;
    SET @UNI = NEWID(); 
    SELECT @UNI;
    

    如前所述,GUID 值在表、数据库和服务器之间是唯一的。 GUID 可以被视为全局主键。本地主键用于唯一标识表中的记录。另一方面,GUID 可用于跨表、数据库和服务器唯一标识记录。

    例如:

    create table AspNetUsers
    (
    Id UNIQUEIDENTIFIER PRIMARY KEY default NEWID(),
    Name nvarchar(200)
    )
    
    INSERT INTO AspNetUsers VALUES (default,'Shane')
    INSERT INTO AspNetUsers VALUES (default,'Jonny')
    
    select * from AspNetUsers
    

    【讨论】:

      【解决方案3】:

      手动创建的 aspnet 角色

      DECLARE @ID UNIQUEIDENTIFIER
      SET @ID = NEWID()
      
      DECLARE @STAMP UNIQUEIDENTIFIER
      SET @STAMP = NEWID()
      
      INSERT INTO [dbo].[AspNetRoles]
                 ([Id]
                 ,[Name]
                 ,[NormalizedName]
                 ,[ConcurrencyStamp])
           VALUES
                 (@ID
                 ,'Admin'
                 ,'ADMIN'
                 ,@STAMP)
      

      【讨论】: