Problema al copiar tabla con campo IDENTITY

13/03/2007 - 20:59 por Vicente Flich | Informe spam
Buenas tardes:

Estoy desarrollando una aplicacion que trabajara con un SQL 2005. El tema es
que, teniendo 2 tablas con la misma estructura (o parecida), necesito copiar
los datos de una sobre la otra. En principio probe con lo siguiente:

INSERT INTO clientes2 SELECT * FROM clientes

Pero el problema esta en que en dichas tablas, hay un campo marcado de
IDENTIDAD. Al ejecutar la consulta anterior me devuelve el error siguiente:

Mens. 8101, Nivel 16, Estado 1, Línea 1
Sólo puede especificarse un valor explícito para la columna de identidad de
la tabla 'PRUEBAS.dbo.CLIENTES2' cuando se usa una lista de columnas e
IDENTITY_INSERT es ON.

¿Alguna sugerencia?

Preguntas similare

Leer las respuestas

#6 Vicente Flich
15/03/2007 - 16:02 | Informe spam
Ahora ya esta claro, asi funciona perfectamente, muchas gracias Diego.

Saludos,
Vicente Flich


"DNC" escribió en el mensaje
news:
perdon por el desliz, en realidad es

set identity_insert testtable3 on
insert into [tempdb].[dbo].[testtable3]([cola], [colb], [colc])
select [cola], [colb], [colc]
from [tempdb].[dbo].[testtable]
set identity_insert testtable3 off

:-)


On 15 mar, 08:53, "Vicente Flich" (quitar 99)>
wrote:
Gracias por el ejemplo. En la segunda opcion realmente, no se porque tiene
la tabla testtable3, ya que no la utilizas. Supongo que lo que querias


poner
es

set identity_insert testtable3 off
insert into [tempdb].[dbo].[testtable3]([cola], [colb], [colc])
select [cola], [colb], [colc]
from [tempdb].[dbo].[testtable]
set identity_insert testtable3 on
go

O sea, el insert se hace sobre testtable3 ¿no?

Saludos
Vicente Flich

"DNC" escribió en el


mensajenews:
Hola Vicente,

va un ejemplo:

create table dbo.testtable
(cola int identity(1,1) primary key,
colb int not null,
colc as (cola + colb) * 2)
go

insert into [tempdb].[dbo].[testtable]([colb])
values(1)

insert into [tempdb].[dbo].[testtable]([colb])
values(2)

insert into [tempdb].[dbo].[testtable]([colb])
values(3)

insert into [tempdb].[dbo].[testtable]([colb])
values(4)

insert into [tempdb].[dbo].[testtable]([colb])
values(5)

insert into [tempdb].[dbo].[testtable]([colb])
values(6)

insert into [tempdb].[dbo].[testtable]([colb])
values(7)
go

select [cola], [colb], [colc]
from [tempdb].[dbo].[testtable]
go

create table dbo.testtable2
(col1 int identity(1,1) primary key,
cola int not null,
colb int not null,
colc int not null)
go

create table dbo.testtable3
(cola int identity(1,1) primary key,
colb int not null,
colc int not null)
go

insert into [tempdb].[dbo].[testtable2]([cola], [colb], [colc])
select [cola], [colb], [colc]
from [tempdb].[dbo].[testtable]
go

set identity_insert testtable3 off
insert into [tempdb].[dbo].[testtable2]([cola], [colb], [colc])
select [cola], [colb], [colc]
from [tempdb].[dbo].[testtable]
set identity_insert testtable3 on
go


Saludos!
diego

On 14 mar, 09:39, Vicente Flich



wrote:
> Gracias por la ayuda. He averiguado algo mas sobre el SET


IDENTITY_INSERT
y
> he puesto la consulta como

> SET IDENTITY_INSERT Clientes2 ON
> INSERT INTO clientes2 SELECT * FROM clientes
> SET IDENTITY_INSERT Clientes2 OFF

> pero nada, sigue saliendo el error. El tema creo que va por ahi, pero
> seguire viendo a ver como.

> "DNC" wrote:
> > el mensaje esta claro, busca en los bols por SET IDENTITY_INSERT

> > tambien podrias insertar el identity de clientes en otro campo del
> > mismo tipo y obviar el identity de clientes2.
> > igual como practica te recomiendo explicitar los campos del insert
> > into clientes2 (campo1,campo2, etc)

> > saludos!
> > diego

> > On 13 mar, 16:59, Vicente Flich
> > wrote:
> > > Buenas tardes:

> > > Estoy desarrollando una aplicacion que trabajara con un SQL 2005. El
tema es
> > > que, teniendo 2 tablas con la misma estructura (o parecida),


necesito
copiar
> > > los datos de una sobre la otra. En principio probe con lo siguiente:

> > > INSERT INTO clientes2 SELECT * FROM clientes

> > > Pero el problema esta en que en dichas tablas, hay un campo marcado


de
> > > IDENTIDAD. Al ejecutar la consulta anterior me devuelve el error
siguiente:

> > > Mens. 8101, Nivel 16, Estado 1, Línea 1
> > > Sólo puede especificarse un valor explícito para la columna de
identidad de
> > > la tabla 'PRUEBAS.dbo.CLIENTES2' cuando se usa una lista de columnas


e
> > > IDENTITY_INSERT es ON.

> > > ¿Alguna sugerencia?- Ocultar texto de la cita -

> - Mostrar texto de la cita -- Ocultar texto de la cita -

- Mostrar texto de la cita -
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida