2008-09-04 152 views
8

有誰知道改變計算列而不刪除SQL Server列的方法。我想停止使用該列作爲計算列,並開始直接在列中存儲數據,但希望保留當前值。SQL Server改變計算列

這甚至可能嗎?

回答

9

不,我知道的,但這裏是你可以做

另一列添加到表 更新與計算列的值列然後刪除計算列

1

好的,讓我看看我是否弄清了這個問題。你想獲得一個當前計算的列,並將其設置爲簡單的數據列。通常情況下,這會丟棄列,但您希望將數據保留在列中。

  1. 使用源表和生成列中的主鍵列創建一個新表。
  2. 將源表中的數據複製到新表中。
  3. 更改源表上的列。
  4. 將數據複製回來。

不管你做什麼,我都很確定改變這個列會丟掉它。這種方式稍微複雜一點,但並不壞,它可以節省您的數據。

[編輯:@SqlMenace的回答要容易得多。 :)詛咒你的威脅! :)]

1

如果您需要保留該列的名稱(以免破壞客戶端代碼),則需要刪除列並添加具有相同名稱的存儲列。通過在單個事務中進行更改(沿着SQLMenace的解決方案的方向),您可以在不停機的情況下執行此操作。這裏有一些僞代碼:

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