如何在SQL Server中生成Guid?

时间:2016-12-20 19:49:35

标签: sql sql-server

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

3 个答案:

答案 0 :(得分:21)

试试这个:

SELECT NEWID()

希望帮助你

答案 1 :(得分:4)

什么是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

enter image description here

答案 2 :(得分:0)

手动创建的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)