gpt4 book ai didi

sql - 无法将值 NULL 插入 X 列,X 列不允许空值。插入失败。

转载 作者:行者123 更新时间:2023-12-02 00:36:18 27 4
gpt4 key购买 nike

我是 SQL Server 的新手,我收到此错误“无法将值 NULL 插入列‘Occupied’,表‘DBProjectHamlet.dbo.tblGrave’;列不允许空值。INSERT 失败。该语句已被终止了。”

这是我的插入代码,后面是创建表格的代码

INSERT INTO tblGrave (GraveName)
SELECT Grave
FROM tblPlotsandOccupants


IF EXISTS(SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'tblGrave' AND TABLE_SCHEMA = 'dbo')
DROP TABLE dbo.tblGrave;
GO
CREATE TABLE tblGrave
(
GraveID INT IDENTITY (1,1),
GraveName VARCHAR(MAX) NULL,
GraveTypeID INT NOT NULL,
PlotID INT NOT NULL,
Occupied BIT NOT NULL
)

我并没有尝试在“已占用”列中插入任何内容,我不知道为什么会发生这种情况或如何解决它。我只想将值插入到 tblGrave (GraveName) 中。任何帮助都会很棒。

最佳答案

没错!您没有Occupied 做任何事情,这就是问题所在。该列指定为 NOT NULL 但没有默认值。您没有插入值,因此它获得默认值。默认默认值为 NULL,这是不允许的。

一个简单的解决方案是:

INSERT INTO tblGrave (GraveName, Occupied)
SELECT Grave, 0
FROM tblPlotsandOccupants;

这解决了您眼前的问题,但随后您会在 PlotId 上收到错误消息。

更健壮的解决方案是为 NOT NULL 列添加一个默认值,并将其余列声明为可为空(默认值)。像这样:

CREATE TABLE tblGrave (
GraveID INT IDENTITY (1,1) PRIMARY KEY,
GraveName VARCHAR(MAX),
GraveTypeID,
PlotID INT,
Occupied BIT NOT NULL DEFAULT 0
);

关于sql - 无法将值 NULL 插入 X 列,X 列不允许空值。插入失败。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49391946/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com