質問

SQL Server で列を削除せずに計算列を変更する方法を知っている人はいますか。列を計算列として使用するのをやめて、データを列に直接保存したいのですが、現在の値は保持したいと考えています。

これも可能でしょうか?

役に立ちましたか?

解決

私が知っているわけではありませんが、あなたにできることはここにあります

テーブルに別の列を追加する列を計算した列の値でその列を更新し、計算された列をドロップします

他のヒント

さて、これが正しいかどうか見てみましょう。現在計算されている列を取得して、それを単純なデータ列にしたいとします。通常、これにより列が削除されますが、データを列に保持したいとします。

  1. ソーステーブルの主キー列と生成された列を含む新しいテーブルを作成します。
  2. ソーステーブルから新しいテーブルにデータをコピーします。
  3. ソーステーブルの列を変更します。
  4. データをコピーして戻します。

何をしても、列を変更するとドロップされると確信しています。この方法は少し複雑ですが、それほど悪くはなく、データも節約できます。

[編集:@SqlMenaceの答えははるかに簡単です。:) 呪ってください、脅威!!:)]

(クライアント コードを壊さないように) 列の名前を維持する必要がある場合は、列を削除し、同じ名前で格納されている列を追加し直す必要があります。単一のトランザクションで (SQLMenace のソリューションに沿って) 変更を行うことで、ダウンタイムなしでこれを行うことができます。以下に疑似コードを示します。

begin transaction
   drop computed colum X
   add stored column X
   populate column using the old formula
commit transaction
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top