8

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

这甚至可能吗?

4

3 回答 3

10

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

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

于 2008-09-04T16:30:52.973 回答
2

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

开始交易
   删除计算列 X
   添加存储的列 X
   使用旧公式填充列
提交事务
于 2008-09-04T17:00:55.070 回答
1

好的,让我看看我是否明白这一点。您想要获取当前计算的列并将其设置为纯简数据列。通常这会删除列,但您希望将数据保留在列中。

  1. 使用源表中的主键列和生成的列创建一个新表。
  2. 将源表中的数据复制到新表中。
  3. 更改源表上的列。
  4. 将数据复制回来。

无论您做什么,我都很确定更改列会删除它。这种方式有点复杂,但还不错,它可以保存您的数据。

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

于 2008-09-04T16:30:40.570 回答