2012-10-02 14 views
6
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; 

¿Cómo puedo lograr esta funcionalidad?Insertar datos con Identity_Insert está activado con Insertar en la Tabla1 Seleccionar * de la Tabla2

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

Cuando esto se sustituye entonces .. Msg 8101, nivel 16, estado 1, línea 7 un valor explícito para la columna de identidad en la tabla 'TestTable' sólo se puede especificar cuando se utiliza una lista de columnas y IDENTITY_INSERT está activado.

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

Lea de nuevo el mensaje de error: "... solo se puede especificar cuando se utiliza una lista de columnas ** y ** IDENTITY_INSERT está activado". En su ejemplo de unión, no está proporcionando una lista de columnas. –

Respuesta

8

que necesita decir

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

Funciona bien pero mi requisito es INSERT INTO TestTable Seleccionar * de ... –

+5

Mi requisito es un Ferrari y una mansión en el país. Eso no afecta las reglas del lenguaje. – podiluska

+0

Cometí un error básico y lo pasé por alto muchas veces :( –

5

Esto debería funcionar correctamente:

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; 

acaba de establecer SET IDENTITY_INSERT ON con los campos que figuran en la cláusula INSERT.

Cuestiones relacionadas