Ayuda para insertar

29/09/2005 - 09:40 por DiegoC | Informe spam
buenos dias,
Quería hacer una inserción de todos los campos de una tabla sobre si misma,
es decir, copiar un registro, pero con el problema añadido de que existe un
campo indice que no se puede repetir, y lo asigna solo la base de datos, y
que la tabla cambia a menudo. Vamos que lo ideal sería algo así, pero no
funciona

insert into Tabla (*) select (*) from Tabla where ...

Muchas gracias
Diego

Preguntas similare

Leer las respuestas

#6 Carlos Sacristán
03/10/2005 - 11:52 | Informe spam
Al hilo de lo que comenta el amigo Salvador, te recomiendo la lectura
del artículo http://www.sommarskog.se/dynamic_sql.html para conocer porqué
no es recomendable el uso de sql dinámico (excepto en situaciones muy
concretas).


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

"Salvador Ramos" escribió en el
mensaje news:#tyz37$
Claro, es que si no pongo los campos me va a dar un error, ya que si pongo


*
también me incluirá en la select el campo identity. En SQL no hay forma de
indicar "todos los campos menos uno" que es lo que tu estás pretendiendo.
Sólo te queda la alternativa de hacer una vista sobre la tabla que no
incluya el campo identity, con lo que cada vez que modifiques tu tabla
tendrías que modificar esa vista incluyendo los nuevos campos, y luego en


el
INSERT INTO ... SELECT ... FROM TuVista.

Otra alternativa es que saques los nombres de los campos de los metadatos


y
montes una consulta dinámica. Esta alternativa no te la recomiendo ya que
perderías en rendimiento y además tendrías los problemas que ocasiona el


uso
del sql dinámico.

Un saludo
Salvador Ramos
Murcia - España
[Microsoft MVP SQL Server]
www.helpdna.net (información sobre SQL server, Windows DNA y .NET)

"DiegoC" escribió en el mensaje
news:sG4%e.4244119$
> Muchas gracias, pero es que en el insert ... select, estas poniendo los
> campos y eso es lo que yo no quiero, porque los se estan creando campos


de
> vez en cuando, y si lo pusiera así, cada vez que se pone un campo


tendría
> que tocar todos los procedimientos.
>
> Un saludo
> Diego
> "Salvador Ramos" escribió en el
> mensaje news:
>>Y ese identificador que es diferente, es un idendity, lo generas tu ...


?
>>
>> Es que en principio, si fuese tu identificador un indentity sería algo
>> así (supongo una tabla con 3 campos Id, nombre, apellido):
>> CREATE TABLE Prueba(
>> Id INT identity(1, 1) PRIMARY KEY,
>> nombre varchar(30),
>> apellido varchar(25)
>> )
>> GO
>>
>> INSERT INTO Prueba VALUES('n1', 'ape1')
>> INSERT INTO Prueba VALUES('n2', 'ape2')
>> INSERT INTO Prueba VALUES('n3', 'ape3')
>> INSERT INTO Prueba VALUES('n4', 'ape4')
>> GO
>>
>> SELECT * FROM Prueba
>> GO
>>
>> INSERT INTO Prueba
>> SELECT nombre, apellido
>> FROM Prueba
>> WHERE Id = 3
>> GO
>>
>> SELECT * FROM Prueba
>> GO
>>
>>
>> Un saludo
>> Salvador Ramos
>> Murcia - España
>> [Microsoft MVP SQL Server]
>> www.helpdna.net (información sobre SQL server, Windows DNA y .NET)
>>
>> "DiegoC" escribió en el mensaje
>> news:lDP_e.4212429$
>>> Vamos a ver, lo que quiero es crear una fila practicamente identica,
>>> exceptuando el identificador, ya que eso no se puede repetir, pero el
>>> resto de la fila que sea igual. Y el problema es que la tabla se esta
>>> cambiando de campos constantemente.
>>> Un saludo
>>> Diego
>>> "Salvador Ramos" escribió en el
>>> mensaje news:
>>>> Hola,
>>>>
>>>> La verdad que no me queda claro lo que indicas, y además entiendo que
>>>> te estás contradiciendo. Por un lado dices que quieres duplicar una
>>>> fila y por otro que no admites duplicados :-S
>>>>
>>>> Un saludo
>>>> Salvador Ramos
>>>> Murcia - España
>>>> [Microsoft MVP SQL Server]
>>>> www.helpdna.net (información sobre SQL server, Windows DNA y .NET)
>>>>
>>>> "DiegoC" escribió en el mensaje
>>>> news:DTM_e.4208756$
>>>>> buenos dias,
>>>>> Quería hacer una inserción de todos los campos de una tabla sobre si
>>>>> misma, es decir, copiar un registro, pero con el problema añadido de
>>>>> que existe un campo indice que no se puede repetir, y lo asigna solo
>>>>> la base de datos, y que la tabla cambia a menudo. Vamos que lo ideal
>>>>> sería algo así, pero no funciona
>>>>>
>>>>> insert into Tabla (*) select (*) from Tabla where ...
>>>>>
>>>>> Muchas gracias
>>>>> Diego
>>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>
>


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida