无法将值 NULL 插入列 - 如何强制标识增加? [关闭]

Posted

技术标签:

【中文标题】无法将值 NULL 插入列 - 如何强制标识增加? [关闭]【英文标题】:Cannot insert the value NULL into column - how to force identity to increment? [closed] 【发布时间】:2021-11-24 21:00:10 【问题描述】:

当尝试 INSERT 进入我的表时,我收到以下异常:

消息 515,第 16 级,状态 2,第 17 行 无法将值 NULL 插入列“rrrId”、表“rrr.rrrColumns”;列不允许空值。插入失败。

这是我的INSERT

INSERT INTO [rrr].[rrrColumns]([Header],[FormElementId])
VALUES ('F2','2F0B9649-2AF7-4C6E-9A0B-02C2C8FE7BB8')

表格设计者显示它确实是一个身份规范:

这是完整的表架构:

CREATE TABLE [rrr].[rrrColumns](
    [rrrColumnId] [int] IDENTITY(1,1) NOT NULL,
    [rrrId] [int] NOT NULL,
    [Header] [nvarchar](256) NOT NULL,
    [FormElementId] [uniqueidentifier] NULL,
    [BaseObjectColumnName] [nvarchar](256) NULL,
 CONSTRAINT [PK_rrrColumns] PRIMARY KEY CLUSTERED 
(
    [rrrColumnId] ASC
)WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO

ALTER TABLE [rrr].[rrrColumns]  WITH CHECK ADD  CONSTRAINT [FK_rrrColumns_FormElements] FOREIGN KEY([FormElementId])
REFERENCES [dbo].[FormElements] ([FormElementId])
GO

ALTER TABLE [rrr].[rrrColumns] CHECK CONSTRAINT [FK_rrrColumns_FormElements]
GO

ALTER TABLE [rrr].[rrrColumns]  WITH CHECK ADD  CONSTRAINT [FK_rrrColumns_rrrs] FOREIGN KEY([rrrId])
REFERENCES [rrr].[rrrs] ([rrrId])
GO

ALTER TABLE [rrr].[rrrColumns] CHECK CONSTRAINT [FK_rrrColumns_rrrs]
GO

我们如何在不指定身份的情况下将INSERT 放入此表中?

【问题讨论】:

[rrrId] [int] NOT NULL, 此列不是标识列。插入时必须提供一个值。那是从哪里来的?如果不了解您的架构、它的使用方式以及您的代码,任何人都无法说出来。 您有两列名称中有 id 第一个 [rrrColumnId] 是 Pk,它是 IDENTITY 第二个 [rrrId] 为什么?您必须在插入语句中为 [rrrId] 传递一个值 这些列名是人为设计的还是生产中使用的实际名称?似乎缺少有意义的名称可能会导致您的疏忽。 【参考方案1】:

rrrColumnId 列是标识列。

您得到的错误是指不接受 NULLS 的列 rrrId 并且您没有在插入语句中为其指定任何值,因此出现错误

无法将值 NULL 插入列“rrrId

【讨论】:

以上是关于无法将值 NULL 插入列 - 如何强制标识增加? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

无法将值 NULL 插入列 CreationTime

无法将值 NULL 插入“ID”列

无法将值 NULL 插入列“id”、表“XXX”;列不允许空值。插入失败

无法将值 NULL 插入列“EmpId”[关闭]

EF Code First - 无法将值 NULL 插入列

SqlException:无法将值 NULL 插入列“x”;列不允许空值。插入失败