无法将值 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 插入列 - 如何强制标识增加? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章