J'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 ça ne marche pas. J'essaie de saisir une autre condition dans la déclaration de cas, mais cela ne fonctionne pas.
Merci beaucoup!
Si vous essayez de modifier une colonne existante, vous ne pouvez pas utiliser ADD. Essayez plutôt ceci:
alter table tbPedidos alter colonne restricoes as (cast (cas lorsque restricaoLicenca = 1 ou restricaoLote = 1 ou restricaoValor = 1 puis 1 else 0 fin comme bit))
EDIT: Ce qui précède est incorrect. Lorsque vous modifiez une colonne calculée, la seule chose que vous pouvez faire est de la supprimer et de la rajouter.
Quelque chose comme ça:
ALTER TABLE dbo.MyTable
DROP COLUMN OldComputedColumn
ALTER TABLE dbo.MyTable
ADD OldComputedColumn AS OtherColumn + 10
Il s'agit de l'une de ces situations où il peut être plus facile et plus rapide d'utiliser simplement la fonctionnalité diagramme de SQL Server Management Studio.
('')
ou quelque chose de tout aussi inoffensif (probablement tel que vous ne modifiez pas le type de données de la colonne).En procédant de cette manière dans SSMS, vous conserverez l'ordre des colonnes de votre table, ce qu'un simple drop...add
ne garantit pas. Cela peut être important pour certains.