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

SQL Server单列自增IDENTITY表INSERT语句执行失败问题求助

解决方案

当SQL Server表仅包含自增IDENTITY列时,常规插入写法会触发报错,可通过以下两种方式解决:

方式1:使用DEFAULT VALUES(推荐)

直接让SQL Server自动生成自增Id,同时通过OUTPUT子句返回新生成的Id:

INSERT INTO Person
OUTPUT Inserted.Id
DEFAULT VALUES;

这种写法会触发IDENTITY列的自增逻辑,自动生成新的Id值,且能通过OUTPUT获取该值,完全适配你的业务需求。

方式2:启用IDENTITY_INSERT(仅手动指定Id时使用)

如果必须手动插入自定义Id值,可先开启IDENTITY_INSERT开关,操作完成后关闭:

SET IDENTITY_INSERT Person ON;

INSERT INTO Person(Id)
OUTPUT Inserted.Id
VALUES(2); -- 需确保该Id未被占用

SET IDENTITY_INSERT Person OFF;

此方式仅适用于特殊场景,日常依赖自增生成Id时优先用方式1。

原写法报错原因

你原语句中显式指定Id列并传入DEFAULT/NULL,但SQL Server不允许对IDENTITY列显式使用这类值——IDENTITY列的默认值由系统自动生成,不能通过显式指定触发;而VALUES后留空不符合SQL语法规范,因此也无法执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 21:44:53