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

#1 Salvador Ramos
29/09/2005 - 12:13 | Informe spam
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

Respuesta Responder a este mensaje
#2 DiegoC
29/09/2005 - 12:47 | Informe spam
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





Respuesta Responder a este mensaje
#3 Salvador Ramos
29/09/2005 - 13:00 | Informe spam
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









Respuesta Responder a este mensaje
#4 DiegoC
30/09/2005 - 08:11 | Informe spam
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













Respuesta Responder a este mensaje
#5 Salvador Ramos
03/10/2005 - 11:43 | Informe spam
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

















Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida