Scambiare due righe in MS SQL Server mantenendo la chiave primaria originale e senza aggiornamento manuale

StackOverflow https://stackoverflow.com/questions/484040

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.

È stato utile?

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
scroll top