如何在SQL Server中生成Guid?

Alm*_*lma 11 sql sql-server

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

小智 26

试试这个:

SELECT NEWID()
Run Code Online (Sandbox Code Playgroud)

希望能帮助你


小智 12

创建 uniqueidentifier 数据类型的变量。在 SSMS 中键入以下代码并执行。

 DECLARE @guid uniqueidentifier = NEWID();
 SELECT @guid as 'GUID';
Run Code Online (Sandbox Code Playgroud)

这里我们创建了一个名为 guid 的数据类型为 uniqueidentifier 的变量。


Man*_*jar 10

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

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

SELECT NEWID()
Run Code Online (Sandbox Code Playgroud)

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

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

DECLARE @UNI UNIQUEIDENTIFIER;
SET @UNI = NEWID(); 
SELECT @UNI;
Run Code Online (Sandbox Code Playgroud)

如前所述,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
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明


Die*_*cio 8

手动创建的 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)
Run Code Online (Sandbox Code Playgroud)