如何向仅含自增主键的SQL表中插入行以生成新ID
报错原因
你的插入语句触发错误有两个核心原因:
- 被
IDENTITY标记的自增列默认不需要、也不允许手动插入值,数据库会自动为该列分配递增的唯一值 - 主键列强制要求非空,插入
NULL的操作本身就违反了主键的非空约束
正确实现方案
方法1:使用DEFAULT VALUES(最推荐)
由于你的表仅有一个自增主键列,直接插入默认值即可,数据库会自动生成符合规则的自增ID:
INSERT INTO [InvestmentJourneys] DEFAULT VALUES;
如果需要获取刚生成的ID,可以搭配SCOPE_IDENTITY()使用:
INSERT INTO [InvestmentJourneys] DEFAULT VALUES; SELECT SCOPE_IDENTITY() AS NewInvestmentJourneyId;
该方法符合自增列的设计规范,性能最优,适合绝大多数场景。
方法2:显式指定列配合DEFAULT关键字
如果你的开发规范要求必须显式写出插入的列名,可以使用如下写法,效果和方法1完全一致:
INSERT INTO [InvestmentJourneys] ([InvestmentJourneyId]) VALUES (DEFAULT);
内容的提问来源于stack exchange,提问作者user7336033
相关产品推荐
相关产品推荐

