执行后,我不断收到错误:
无法将值NULL插入表的“ ExampleID”列中 'DB_Example.dbo.tbl_Example';列不允许为空。插入 失败。
但是,我认为不存在任何NULL值。我试图通过使用以下命令简单地用特定值填充表格:
SELECT * FROM tbl_Example
INSERT INTO tbl_Example ([Name])
VALUES ('Example1'),
('Example2'),
('Example3'),
('Example4')
我正在使用完全相同的代码/格式来填充数据库中的其他3个表,除此表外,其他任何表均未收到错误。无法弄清楚。
编辑:DBMS是SQL Server
答案 0 :(得分:5)
似乎tbl_Example
具有定义了ExampleID
约束的另一列(即NOT NULL
)。因此,您不能插入空值:
您还需要声明该列:
INSERT INTO tbl_Example (ExampleID, [Name])
VALUES (?, 'Example1'), (?, 'Example2'), (?, 'Example3'), (?, 'Example4')
每当您使用INSERT INTO table (column_list)
语句以及任何定义了NOT NULL
约束的列时,都必须声明该列名应使用primary key
这样的身份列。
例如,您的ExampleID
列建议我作为身份列。
答案 1 :(得分:0)
问题在于INSERT
中未包括的列被设置为其默认值。默认的“默认”为NULL
,这就是您收到错误的原因。
检查您对Example
的定义。通常,称为ExampleId
的列将是一个身份列。因此,它看起来应该像:
CREATE TABLE tbl_Example (
ExampleId INT IDENTITY(1, 1) PRIMARY KEY,
Name VARCHAR(?)
);
IDENTITY()
作为默认值。根据插入顺序,它通常是一个递增的值序列。
使用此定义,您的代码将起作用:
INSERT INTO tbl_Example ([Name])
VALUES ('Example1'),
('Example2'),
('Example3'),
('Example4');
我不建议显式插入主键的值。在某些情况下,您想这样做,但是一般来说,自动生成密钥是可取的(如果要避免插入错误)。