Вопрос

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

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

Это было полезно?

Решение

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

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

Другие советы

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

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

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

[Править:Ответ @SQLMenace намного проще.:) Будь ты Проклят, Угроза!!:)]

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

begin transaction
   drop computed colum X
   add stored column X
   populate column using the old formula
commit transaction
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top