【发布时间】:2026-02-16 18:20:09
【问题描述】:
我需要在 SQL 中创建一个 ID 作为 Guid(无身份)我该怎么做?我将 Id 定义为 uniqueidentifier 但在 Db 中保存的是 00000000-0000-0000-0000-000000000000
【问题讨论】:
标签: sql sql-server
我需要在 SQL 中创建一个 ID 作为 Guid(无身份)我该怎么做?我将 Id 定义为 uniqueidentifier 但在 Db 中保存的是 00000000-0000-0000-0000-000000000000
【问题讨论】:
标签: sql sql-server
试试这个:
SELECT NEWID()
希望对你有帮助
【讨论】:
什么是 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
【讨论】:
手动创建的 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)
【讨论】: