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