SQL Server 更改计算列

8

有没有办法在不删除SQL Server中的计算列的情况下修改它?我想停止使用该列作为计算列,并开始直接存储数据到该列中,但是希望保留当前值。

这种操作是否可行?

3个回答

10

我不知道有没有其他方法,但这里有一个可以尝试的方法:

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


2

如果您需要保留列的名称(以免破坏客户端代码),则需要删除该列并添加一个具有相同名称的存储列。您可以通过在单个事务中进行更改(类似于SQLMenace的解决方案)来实现无停机时间。以下是一些伪代码:

开始事务
   删除计算列X
   添加存储列X
   使用旧公式填充列
提交事务

1

好的,让我看看我是否理解正确。您想将当前计算的列变为普通数据列。通常情况下,这会删除该列,但您想保留该列中的数据。

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

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

[编辑:@SqlMenace的答案要简单得多。:) 诅咒你Menace!! :)]


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接