uso update tabla datos actualizar sql sql-server-2008 edit alter calculated-columns

update - ¿Cómo puedo modificar esta columna calculada en SQL Server 2008?



update tabla temporal sql server (4)

Tengo una columna calculada creada con la siguiente línea:

alter table tbPedidos add restricoes as (cast(case when restricaoLicenca = 1 or restricaoLote = 1 then 1 else 0 end as bit))

Pero ahora necesito cambiar esta columna por algo como:

alter table tbPedidos alter column restricoes as (cast(case when restricaoLicenca = 1 or restricaoLote = 1 or restricaoValor = 1 then 1 else 0 end as bit))

Pero no está funcionando. Intento ingresar otra condición a la declaración de caso, pero no está funcionando.

¡Muchas gracias!


Algo como esto:

ALTER TABLE dbo.MyTable DROP COLUMN OldComputedColumn ALTER TABLE dbo.MyTable ADD OldComputedColumn AS OtherColumn + 10

Source


Como Michael Todd dice correctamente en su respuesta

Al modificar una columna calculada, lo único que puede hacer es soltarla y volver a agregarla.

Solo tuve que hacer esto yo mismo, aunque quería preservar los datos existentes (como hace Management Studio cuando realiza esta tarea a través del diseñador).

Mi solución fue almacenar los datos en una tabla temporal y luego actualizar la tabla con los valores almacenados después de haber descartado y recreado la columna calculada.

SELECT IDKey, Value INTO #Temp FROM MyTable ALTER TABLE MyTable DROP COLUMN Value ALTER TABLE MyTable ADD Value nvarchar(max) NULL UPDATE MyTable SET Value = #Temp.Value FROM MyTable INNER JOIN #Temp ON #Temp.IDKey= MyTable.IDkey


Esta es una de esas situaciones en las que puede ser más fácil y más rápido simplemente usar la función de diagram de SQL Server Management Studio.

  1. Cree un nuevo diagrama, agregue su tabla y elija mostrar la columna de fórmula en la vista de tabla del diagrama.
  2. Cambia la fórmula de las columnas a una cadena vacía ('''') o algo igualmente inocuo (probablemente de modo que no cambies el tipo de datos de la columna).
  3. Guarde el diagrama (que debe guardar la tabla).
  4. Altere su función.
  5. Vuelva a colocar la función en la fórmula para esa columna.
  6. Ahorra una vez más.

Si lo hace de esta manera en SSMS, se conservará el orden de las columnas en su tabla, lo que un simple drop...add no garantizará. Esto puede ser importante para algunos.


Si intentas cambiar una columna existente, no puedes usar ADD. En cambio, intente esto:

alterar la tabla tbPedidos alterar la columna de restricciones como (cast (caso cuando restricaoLicenca = 1 o restricaoLote = 1 o restricaoValor = 1 luego 1 else 0 terminar como bit))

EDITAR: Lo anterior es incorrecto . Al modificar una columna calculada , lo único que puede hacer es soltarla y volver a agregarla.