2010-03-10 20 views
5

Necesito duplicar una fila cambiando la PK. La tabla puede ser diferente en cada instalación de cliente, por lo que no puedo simplemente enumerar las columnas. He conseguido hacer lo siguiente:Cómo copiar una fila de CUALQUIER tabla cambiando una columna

INSERT INTO table SELECT * FROM table WHERE PK='value' 

pero es obvio que falla porque estoy tratando de duplicar el PK.

Luego probé:

INSERT INTO table SELECT 'newValue' AS PK, * FROM table WHERE PK='value' 

También fracasó, debido a que los nombres de columna no coinciden.

Sé que PK siempre será la primera columna, pero no estoy seguro de que sea de mucha utilidad.

Entonces ... ¿Es esto posible? ¿Alguna idea?

Respuesta

7

La única solución es generar la consulta dinámicamente al consultar su lista de columnas y excluir la columna de identidad (por lo que supongo que desea omitir la PK).

+0

Por supuesto, PK es la abreviatura de Primary Key. – raven

+0

Como no hay mejores respuestas, estoy aceptando esto, lo cual parece ser correcto. – raven

2
INSERT INTO table1 (col1_PK, col2 col3) 
SELECT newValue, col2, col3 
FROM table1 
WHERE col1_PK = 'Value' 
+2

Como dijo el OP, él no conoce los nombres de las columnas de antemano. –

Cuestiones relacionadas