我需要在SQL中创建一个ID作为Guid(没有身份)我怎么能这样做?我将Id定义为uniqueidentifier,但在Db中保存的是00000000-0000-0000-0000-000000000000
小智 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)
手动创建的 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)