No estoy seguro si podrá lograr esto sin usar sql dinámico para construir la declaración de actualización en una variable.
Esta declaración devolverá una lista de columnas en base al nombre de la tabla se pone en:
select name from syscolumns
where [id] = (select [id] from sysobjects where name = 'tablename')
No estoy seguro si puedo evitar un bucle aquí .... que necesita para cargar los resultados de arriba en un cursor y luego construir una consulta desde él. Psuedo codificado:
set @query = 'update [1607348182] set '
load cursor --(we will use @name to hold the column name)
while stillrecordsincursor
set @query = @query + @name + ' = tmp_[1607348182]. ' [email protected] + ','
load next value from cursor
loop!
Cuando la consulta se realiza en construcción en el bucle, utilice @query sp_executesql Exec.
Solo una pequeña advertencia ... construir un sql dinámico en un bucle como este puede ser un poco confuso. Para solucionar problemas, coloca una @query selecta en el ciclo y mira cómo se construye @query.
editar: No estoy seguro si podrá hacer todas las 1000 filas en una actualización a la vez ... hay límites lógicos (varchar (8000)?) En el tamaño que @query también puede crecer. Puede que tenga que dividir el código para que maneje 50 columnas a la vez. Coloque las columnas de la declaración de selección syscolumns en una tabla temporal con un id. Y cree su sql dinámico para que actualice 20 columnas (¿o 50?) A la vez.
Otra alternativa sería utilizar Excel para construir en masa esto. Haga la columna seleccionar y copiar los resultados en la columna a de una hoja de cálculo. Put '= en la columna b, tmp. [12331312] en la columna c, copie la columna a en la columna D, y una coma en la columna e. Copie la hoja de cálculo completa en un bloc de notas, y debe tener las columnas de la declaración de actualización desarrolladas para usted. No es una mala solución si se trata de un evento de una sola toma, no estoy seguro de si confiaría en esto como una solución en curso.
Recomendaría usar un 'TRIGGER' o modificar su esquema para que no tenga que hacer esto. –
No entiendo. Después de su primera actualización, las dos tablas contendrán filas idénticas, entonces, ¿qué espera que haga la segunda actualización? – PaulG
Travis G, estoy de acuerdo con usted para modificar el esquema de db, pero desafortunadamente debería seguir este esquema en mi proyecto. – amuliar