2008-09-04 4 views
8

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

Возможно ли это?

ответ

9

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

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

1

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

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

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

[Изменить: @ Ответ SqlMenace намного проще. :) Проклятье, тебе угроза! :)]

1

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

 
begin transaction 
    drop computed colum X 
    add stored column X 
    populate column using the old formula 
commit transaction 
Смежные вопросы