SQL Server измененный вычисляемый столбец - PullRequest
8 голосов
/ 04 сентября 2008

Кто-нибудь знает способ изменить вычисляемый столбец без удаления столбца в SQL Server. Я хочу прекратить использование столбца в качестве вычисляемого столбца и начать хранить данные непосредственно в столбце, но хотел бы сохранить текущие значения.

Возможно ли это вообще?

Ответы [ 3 ]

9 голосов
/ 04 сентября 2008

Не знаю, но вот что вы можете сделать

добавить еще один столбец в таблицу обновите этот столбец значениями вычисляемого столбца, затем отбросьте вычисляемый столбец

1 голос
/ 04 сентября 2008

Если вам нужно сохранить имя столбца (чтобы не нарушать код клиента), вам нужно будет удалить столбец и добавить сохраненный столбец с тем же именем. Вы можете сделать это без простоев, внеся изменения (в соответствии с решением SQLMenace) в одну транзакцию. Вот некоторый псевдокод:

begin transaction
   drop computed colum X
   add stored column X
   populate column using the old formula
commit transaction
1 голос
/ 04 сентября 2008

Хорошо, так что давайте посмотрим, правильно ли я понял. Вы хотите взять столбец, который в данный момент вычисляется, и сделать его столбцом данных простой таблицы. Обычно это приводит к удалению столбца, но вы хотите сохранить данные в столбце.

  1. Создайте новую таблицу со столбцами первичного ключа из исходной таблицы и сгенерированного столбца.
  2. Скопируйте данные из исходной таблицы в новую таблицу.
  3. Измените столбец в исходной таблице.
  4. Скопируйте данные обратно.

Независимо от того, что вы делаете, я уверен, что изменение столбца отбросит его. Этот способ немного сложнее, но не так уж и плох, и он сохраняет ваши данные.

[Редактировать: @ SqlMenace ответить намного проще. :) проклинаю тебя угроза !! :)]

...