Scambiare due righe in MS SQL Server mantenendo la chiave primaria originale e senza aggiornamento manuale
-
20-08-2019 - |
Domanda
Ho il seguente problema: ho righe come
ID CODE NAME .........
1 h1100h1 Cool example1 .........
2 h654441 Another cool1 .........
Vorrei scambiarli mantenendo tutte le vecchie chiavi primarie e vincoli. Certo, posso facilmente risolverlo manualmente aggiornando le righe. Mi chiedo se qualcuno abbia una soluzione eccellente per questo tipo di problema invece di eseguire manualmente il comando di aggiornamento. Apprezzo davvero qualsiasi suggerimento o raccomandazione.
Soluzione
Non l'ho provato, ma penso che funzionerà. Suppongo che id sia una chiave primaria a colonna singola. In caso contrario, dovrai modificare leggermente questo codice per gestire il 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)
Altri suggerimenti
l'auto-join con un aggiornamento è la tua unica scommessa sicura
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow