Vertauschen zweier Zeilen in MS SQLServer die ursprüngliche Primärschlüssel beibehalten und ohne manuelle Aktualisierung
-
20-08-2019 - |
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.
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