我是SQL Server新手,我收到此错误"无法将值NULL插入列' Occupied',table' DBProjectHamlet.dbo.tblGrave&#39 ;;列不允许空值。 INSERT失败。该声明已被终止。"
这是我的插入代码,后跟创建表的代码
public class GenericInput<T>
{
public T OrderId { get; set; }
public T CustomerName { get; set; }
}
我没有尝试在列中插入任何内容,我不知道为什么会发生这种情况或如何修复它。我只想在tblGrave(GraveName)中插入值。任何帮助都会很棒。
答案 0 :(得分:2)
完全!你没有对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
);
答案 1 :(得分:0)
创建表时,您将该列定义为“NOT NULL”,而不是允许它为空。
您需要允许“Occupied”为null,设置默认值或定义插入时所需的值。
您甚至可以将值设置为'',该值为空但不为空。
编辑
注意@ Gordon对sql示例的回答。