SQL Server Изменяет Вычисляемый столбец
-
09-06-2019 - |
Вопрос
Кто-нибудь знает способ изменить вычисляемый столбец без удаления столбца в SQL Server?Я хочу прекратить использовать столбец в качестве вычисляемого столбца и начать хранить данные непосредственно в столбце, но хотел бы сохранить текущие значения.
Возможно ли это вообще?
Решение
Насколько я знаю, нет, но вот кое-что, что вы можете сделать
добавьте в таблицу еще один столбец обновите этот столбец значениями вычисляемого столбца, затем удалите вычисляемый столбец
Другие советы
Хорошо, итак, позвольте мне посмотреть, правильно ли я все понял.Вы хотите взять столбец, который вычисляется в данный момент, и сделать его обычным столбцом данных.Обычно при этом столбец удаляется, но вы хотите сохранить данные в столбце.
- Создайте новую таблицу со столбцами первичного ключа из вашей исходной таблицы и сгенерированного столбца.
- Скопируйте данные из вашей исходной таблицы в новую таблицу.
- Измените столбец в вашей исходной таблице.
- Скопируйте данные обратно.
Независимо от того, что вы делаете, я почти уверен, что изменение столбца приведет к его удалению.Этот способ немного сложнее, но не так уж плох, и он экономит ваши данные.
[Править:Ответ @SQLMenace намного проще.:) Будь ты Проклят, Угроза!!:)]
Если вам нужно сохранить имя столбца (чтобы не нарушать работу клиентского кода), вам нужно будет удалить столбец и добавить обратно сохраненный столбец с тем же именем.Вы можете сделать это без простоев, внеся изменения (в соответствии с решением SQLMenace) за одну транзакцию.Вот некоторый псевдокод:
begin transaction drop computed colum X add stored column X populate column using the old formula commit transaction