You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server插入带NEWID()默认值的uniqueidentifier列后如何获取生成的ID

解决方案

方法1:使用OUTPUT子句(最推荐,无并发问题)

这是SQL Server原生支持的返回操作数据的语法,不受并发插入影响,不需要额外写查询逻辑,直接修改插入语句即可:

INSERT INTO dbo.MyData (Data)
OUTPUT inserted.Id
VALUES (NULL)

执行后会直接返回刚插入记录的Id值。如果需要把值存到变量供后续逻辑使用,可以写成:

DECLARE @NewId uniqueidentifier
INSERT INTO dbo.MyData (Data)
OUTPUT inserted.Id INTO @NewId
VALUES (NULL)

-- 后续可直接调用@NewId变量
SELECT @NewId AS 刚生成的唯一ID

方法2:匹配插入字段查询(仅适用于无并发、插入数据有唯一标识的场景)

如果你插入的Data字段或者其他附带字段有全局唯一值,不会和其他插入记录重复,可以插入后按唯一字段过滤查询:

INSERT INTO dbo.MyData (Data)
VALUES (0x你的唯一二进制数据)
GO

SELECT Id FROM dbo.MyData WHERE Data = 0x你的唯一二进制数据

注意:该方法不适合高并发场景,多个用户同时插入相同值时会出现查错ID、返回多条记录的问题,稳定性远低于OUTPUT方案。

常见误区说明

针对自增主键的SCOPE_IDENTITY()、@@IDENTITY等函数仅支持数值类型的自增ID,对NEWID()生成的uniqueidentifier类型主键无效,无法用这类函数获取生成的ID。

内容的提问来源于stack exchange,提问作者user12116884

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 13:48:01