10
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行目テーブル'TestTable'のID列の明示的な値は、列リストが使用され、IDENTITY_INSERTがONの場合にのみ指定できます。

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
4

2 に答える 2

10

あなたは言う必要があります

INSERT INTO TestTable (id, name)
Select * from  
( 
Select 55 as a,'data55' as b 
Union 
Select 56 as a,'data55' as b 
)n 
于 2012-10-02T10:23:43.307 に答える
8

これは正しく機能するはずです:

SET IDENTITY_INSERT TestTable ON;

INSERT INTO TestTable(id, name)
Select * 
from 
( 
    Select 55 as a, 'data55' as b 
    Union 
    Select 56 as a, 'data55' as b 
)n;

SET IDENTITY_INSERT ONにリストされているフィールドで設定するだけです。INSERT

于 2012-10-02T10:24:20.937 に答える