【发布时间】:2012-10-02 18:24:20
【问题描述】:
CREATE TABLE TestTable (id int IDENTITY (1,1), name nvarchar(100));
INSERT INTO TestTable(name) VALUES ('data1');
INSERT INTO TestTable(name) VALUES ('data2');
Declare @Identity as int
set @identity=IDENT_CURRENT ('TestTable')
SET IDENTITY_INSERT TestTable ON;
我怎样才能实现这个功能?
INSERT INTO TestTable
Select * from
(
Select 55 as a,'data55' as b
Union
Select 56 as a,'data55' as b
)n
当它被替换时.. 消息 8101,第 16 层,状态 1,第 7 行 只有在使用列列表并且 IDENTITY_INSERT 为 ON 时,才能为表“TestTable”中的标识列指定显式值。
INSERT INTO TestTable (id, name) VALUES (55, 'data55');
INSERT INTO TestTable (id, name) VALUES (56, 'data55');
SET IDENTITY_INSERT TestTable OFF;
DBCC CHECKIDENT (TestTable, reseed,@identity )
INSERT INTO TestTable(name) VALUES ('data3');
Select * from TestTable
Drop table TestTable
【问题讨论】:
-
再次阅读错误信息:“...只能在使用列列表时指定并且 IDENTITY_INSERT 为ON。”。在您的联合示例中,您没有提供列列表。