SQL Server更改计算列

时间:2008-09-04 16:25:17

标签: sql-server alter-table

有没有人知道在不删除SQL Server中的列的情况下更改计算列的方法。我想停止将列用作计算列并开始直接在列中存储数据,但希望保留当前值。

这甚至可能吗?

3 个答案:

答案 0 :(得分:9)

不是我知道的,但这是你可以做的事情

向表中添加另一列 使用计算列的值更新该列,然后删除计算列

答案 1 :(得分:1)

好的,让我看看我是否直截了当。您想要获取当前计算的列并使其成为普通的数据列。通常这会丢弃列,但您希望将数据保留在列中。

  1. 使用源表和生成列中的主键列创建一个新表。
  2. 将源表中的数据复制到新表中。
  3. 更改源表上的列。
  4. 复制数据。
  5. 无论你做什么,我都非常确定更改列会丢弃它。这种方式有点复杂但不是那么糟糕,它会保存您的数据。

    [编辑:@ SqlMenace的答案要容易得多。 :)诅咒你的威胁!! :)]

答案 2 :(得分:1)

如果您需要维护列的名称(以便不破坏客户端代码),则需要删除该列并添加一个具有相同名称的存储列。通过在单个事务中进行更改(按照SQLMenace的解决方案),您可以在不停机的情况下执行此操作。这是一些伪代码:

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