Vertauschen zweier Zeilen in MS SQLServer die ursprüngliche Primärschlüssel beibehalten und ohne manuelle Aktualisierung

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

Frage

Ich habe folgendes Problem: Ich habe Zeilen wie

ID   CODE     NAME            .........
1    h1100h1  Cool example1   .........
2    h654441  Another cool1   .........

würde Ich mag sie tauschen alle alten Primärschlüssel und Einschränkungen zu halten. Natürlich kann ich diese leicht lösen manuell durch die Zeilen zu aktualisieren. Ich frage mich, Art, ob jemand für diese Art von Problem jede ausgezeichnete Lösung hat, anstatt nur manuell aktualisieren Befehl ausgeführt wird. Ich schätze wirklich irgendwelche Vorschläge oder Empfehlungen.

War es hilfreich?

Lösung

ich nicht getestet haben, aber ich denke, es wird funktionieren. Ich gehe davon aus, dass id eine einspaltige Primärschlüssel ist. Ist dies nicht der Fall ist, dann müssen Sie diesen Code anpassen leicht die PK zu behandeln.

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)

Andere Tipps

Selbst verbinden mit einem Update Ihre einzige sichere Wette ist

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top