SQL Server Alter Computed Column

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

Это вообще возможно?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
8
0
9 312
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

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

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

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

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

Ответ принят как подходящий

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

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

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

begin transaction
   drop computed colum X
   add stored column X
   populate column using the old formula
commit transaction

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