Pregunta

¿Alguien conoce una forma de modificar una columna calculada sin eliminarla en SQL Server?Quiero dejar de usar la columna como columna calculada y comenzar a almacenar datos directamente en la columna, pero me gustaría conservar los valores actuales.

¿Es esto siquiera posible?

¿Fue útil?

Solución

No que yo sepa, pero aquí hay algo que puedes hacer.

Agregue otra columna a la actualización de la tabla esa columna con los valores de la columna calculada y luego suelte la columna calculada

Otros consejos

Ok, déjame ver si entendí esto bien.Desea tomar una columna que se está calculando actualmente y convertirla en una columna de datos simple.Normalmente, esto eliminaría la columna, pero desea mantener los datos en la columna.

  1. Cree una nueva tabla con las columnas de clave principal de su tabla fuente y la columna generada.
  2. Copie los datos de su tabla de origen en la nueva tabla.
  3. Cambie la columna en su tabla fuente.
  4. Copie los datos nuevamente.

No importa lo que hagas, estoy bastante seguro de que cambiar la columna la eliminará.Esta forma es un poco más compleja pero no tan mala y guarda tus datos.

[Editar:La respuesta de @SqlMenace es mucho más sencilla.:) ¡¡Maldita seas, amenaza!!:)]

Si necesita mantener el nombre de la columna (para no romper el código del cliente), deberá descartar la columna y volver a agregar una columna almacenada con el mismo nombre.Puede hacer esto sin tiempo de inactividad al realizar los cambios (en la línea de la solución de SQLMenace) en una sola transacción.Aquí hay un pseudocódigo:

begin transaction
   drop computed colum X
   add stored column X
   populate column using the old formula
commit transaction
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top