您好我正在尝试使用此命令将10000条记录插入到表中。
CREATE TABLE mytable(
id INTEGER PRIMARY KEY,
TEXT INTEGER NOT NULL,
OLDID iNTEGER NOT NULL,
Firstname VARCHAR(50) NOT NULL,
Middlename VARCHAR(50) NULL,
last_name VARCHAR(75) NOT NULL,
EMAIL VARCHAR(225) NOT NULL,
STATUS BOOL NOT NULL
);
DECLARE @i int
declare @rows_to_insert int
SET @i = 6
set @rows_to_insert = 10000
WHILE @i < @rows_to_insert
BEGIN
INSERT INTO mytable VALUES (@i, @i,@i,'john'+@i,null,'Test','john'+@i+'@someone.com','Active');
set @i = @i+1
END
但我得到了这个错误。
Msg 8101,Level 16,State 1,Line 8 只有在使用列列表并且IDENTITY_INSERT为ON时,才能指定表'mytable'中标识列的显式值。
答案 0 :(得分:4)
该表有一个标识列。您需要在insert语句中显式声明其余列。我可能会认为你的第一列是身份。然后它看起来像:
BEGIN
INSERT INTO mytable(<col2>, <col3>, <col4>, <col5>, <col6>, <col7>)
VALUES (@i,@i,'john'+@i,null,'Test','john'+@i+'@someone.com','Active');
set @i = @i+1
END
当然,你会在哪里找到你的专栏名称。顺便说一下列出列名总是一个好主意。
答案 1 :(得分:2)
您正在尝试将值插入标识列。例如,如果您的表格如下所示:
Id | Name | Value
^identity
然后,除非您设置Id
,否则无法在IDENTITY_INSERT
列中插入值。这意味着有效的insert语句看起来像:
INSERT INTO MyTable (Name, Value) VALUES ('MyName', 'MyValue')
Id
会自动生成。
答案 2 :(得分:2)
您的表定义使用增量ID作为标识(主键)。因此,您无法为此主键插入值,因为该值将自动插入。
要解决您的问题,请使用以下查询模板插入数据并排除主键,因为它将自动插入:
INSERT INTO mytable (field1, field2,...) VALUES (value1, value2...)