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

如何向仅含自动生成ID列的SQL Server表插入数据并获取ID

解决方法:插入数据并提取自动生成的UniqueIdentifier ID

没问题,这其实完全可以实现,你之前报错是因为没有正确触发默认值的使用。下面给你两种实用的方法,既能完成插入,又能拿到生成的EmailGroupGuid:

方法1:使用INSERT + OUTPUT子句(一步获取ID)

这是最直接的方式,插入的同时就能返回生成的唯一标识符:

-- 如果你需要把ID存到变量里后续使用
DECLARE @GeneratedGuid UNIQUEIDENTIFIER;

INSERT INTO [dbo].[EmailGroup] ([EmailGroupGuid])
OUTPUT inserted.EmailGroupGuid INTO @GeneratedGuid
VALUES (DEFAULT);

-- 查看生成的ID
SELECT @GeneratedGuid AS NewEmailGroupGuid;

如果不需要存储到变量,直接返回结果也可以:

INSERT INTO [dbo].[EmailGroup] ([EmailGroupGuid])
OUTPUT inserted.EmailGroupGuid
VALUES (DEFAULT);

方法2:使用DEFAULT VALUES关键字

这种写法更简洁,专门用于所有列都有默认值的表:

-- 直接插入并返回ID
INSERT INTO [dbo].[EmailGroup]
OUTPUT inserted.EmailGroupGuid
DEFAULT VALUES;

为什么之前会报错?

你的表只有一个列,且该列有newsequentialid()的默认约束,但如果直接执行INSERT INTO [dbo].[EmailGroup] VALUES ();或者不指定任何列/值,SQL Server会认为你需要手动提供EmailGroupGuid的值,而你没有给出,所以触发报错。上面两种方法明确告诉SQL Server要使用列的默认值,就不会有问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:03:16