Question

I ai une colonne calculée créée avec la ligne suivante:

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

Mais, maintenant, je dois changer cette colonne pour quelque chose comme:

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))

Mais cela ne fonctionne pas. Je suis en train d'entrer une autre condition à la déclaration de cas, mais il ne fonctionne pas.

Merci beaucoup!

Était-ce utile?

La solution

Si vous essayez de changer une colonne existante, vous ne pouvez pas utiliser ADD. Au lieu de cela, essayez ceci:

    modifier tbPedidos de table     modifier restricoes de colonne que     (Coulée (cas lorsque restricaoLicenca = 1 ou restricaoLote = 1 ou restricaoValor = 1         puis une autre extrémité en tant que bit 0))

EDIT: Ce qui précède est incorrect . Lors de la modification d'un calculé colonne la seule chose que vous peut faire est de laisser tomber et ajouter de nouveau.

Autres conseils

Quelque chose comme ceci:

ALTER TABLE dbo.MyTable
DROP COLUMN OldComputedColumn

ALTER TABLE dbo.MyTable
ADD OldComputedColumn AS OtherColumn + 10

Source

Comme Michael Todd affirme à juste titre dans sa réponse

  

Lors de la modification d'une colonne calculée la seule chose que vous pouvez faire est de laisser tomber   et ajouter à nouveau.

Je viens juste de faire moi-même, même si je voulais conserver les données existantes (tout comme Management Studio lorsque vous effectuez cette tâche par le concepteur).

Ma solution était de stocker les données dans une table temporaire puis mettez à jour la table avec les valeurs enregistrées après que je l'avais abandonné et recréée la colonne calculée.

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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top