元のプライマリキーを保持し、手動で更新することなく、MSのSQLServerに2列を入れ替えます

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

質問

私は、次の問題を抱えている:私は

のような行を持っています
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)

他のヒント

自己更新に参加する

あなたの唯一の安全な賭けであります
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top