2008-09-04 6 views
8

SQL Serverで列を削除せずに計算列を変更する方法を知っている人はいませんか。列を計算列として使用するのをやめ、列に直接データを格納することを開始したいが、現在の値を保持したい。SQL Server Alter Computed Column

これも可能ですか?

答えて

9

ありません(クライアントコードを破らないように)列の名前を維持する必要がある場合は、列を削除して、同じ名前の格納された列を追加する必要があります。 SQLMenaceのソリューションのラインに沿った変更を1回のトランザクションで行うことで、ダウンタイムなしでこれを行うことができます。ここではいくつかの擬似コードは次のとおりです。

 
begin transaction 
    drop computed colum X 
    add stored column X 
    populate column using the old formula 
commit transaction 
1

私はこれをまっすぐにしてもらえますか?現在計算されている列を取得し、それをプレーンジェーンのデータ列にしたいとします。通常、これは列を削除しますが、列にデータを保持する必要があります。

  1. ソーステーブルと生成された列のプライマリキー列で新しいテーブルを作成します。
  2. ソーステーブルのデータを新しいテーブルにコピーします。
  3. ソーステーブルの列を変更します。
  4. データを元に戻します。

は、どんなにあなたが何をすべきか、私はそれをドロップします列を変更することはかなり確信していません。この方法はもう少し複雑ですが、それほど悪くはなく、データを保存します。

[編集:@ SqlMenaceの答えはずっと簡単です。 :)あなたを呪う呪い!私の知っているが、ここであなたが

がテーブルに続いた場合は計算列

1

をドロップする計算列の値を持つ列 更新を別の列を追加行うことができるものであること:)]