SQL Server更改计算列

时间:2020-03-05 18:47:43  来源:igfitidea点击:

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

这有可能吗?

解决方案

回答

好吧,让我看看我是否明白这一点。我们要采用当前计算的列并将其设为纯色数据列。通常,这会删除该列,但我们希望将数据保留在该列中。

  • 创建一个新表,其中包含源表中的主键列和生成的列。
  • 将数据从源表复制到新表中。
  • 更改源表上的列。
  • 将数据复制回去。

不管我们做什么,我都可以肯定,更改列将删除该列。这种方法比较复杂,但还不错,它可以保存数据。

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

回答

不是我所知道的,但是我们可以执行以下操作

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

回答

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

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