元のプライマリキーを保持し、手動で更新することなく、MSのSQLServerに2列を入れ替えます
-
20-08-2019 - |
質問
私は、次の問題を抱えている:私は
のような行を持っていますID CODE NAME .........
1 h1100h1 Cool example1 .........
2 h654441 Another cool1 .........
私はすべての古い主キーと制約保持それらを交換したいと思います。もちろん、私は簡単に行を更新することにより、手動でこの問題を解決することができます。私は一種の誰だけではなく、手動でupdateコマンドを実行するこの種の問題のための任意の優れたソリューションを持っているかどうかを疑問に思って。私は本当に任意の提案や提言を感謝します。
解決
私はこれをテストしていませんが、私はそれが動作すると思います。私はidが単一列の主キーであることを仮定しています。それはケースではないなら、あなたは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)
他のヒント
自己更新に参加する
あなたの唯一の安全な賭けであります所属していません StackOverflow