Intercambiando dos filas en MS SQLServer conservando la clave primaria original y sin actualización manual
-
20-08-2019 - |
Pregunta
Tengo el siguiente problema: tengo filas como
ID CODE NAME .........
1 h1100h1 Cool example1 .........
2 h654441 Another cool1 .........
Me gustaría intercambiarlos conservando todas las claves y restricciones primarias antiguas. Por supuesto, puedo resolver esto fácilmente manualmente actualizando las filas. Me pregunto si alguien tiene una solución excelente para este tipo de problema en lugar de simplemente ejecutar el comando de actualización manualmente. Realmente aprecio cualquier sugerencia o recomendación.
Solución
No he probado esto, pero creo que funcionará. Supongo que id es una clave principal de una sola columna. Si ese no es el caso, deberá ajustar este código ligeramente para manejar la PK.
UPDATE
T1
SET
column_1 = T2.column_1,
column_2 = T2.column_2,
...
FROM
dbo.My_Table T1
INNER JOIN dbo.My_Table T2 ON
T2.id =
CASE
WHEN T1.id = @id_1 THEN @id_2
WHEN T1.id = @id_2 THEN @id_1
ELSE NULL
END
WHERE
T1.id IN (@id_1, @id_2)
Otros consejos
unirse con una actualización es su única apuesta segura
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow