次の行で作成された計算列があります。
alter table tbPedidos
add restricoes as (cast(case when restricaoLicenca = 1 or restricaoLote = 1 then 1 else 0 end as bit))
しかし、今、この列を次のように変更する必要があります。
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))
しかし、それは機能していません。 caseステートメントに別の条件を入力しようとしていますが、機能していません。
どうもありがとう!
既存の列を変更しようとしている場合は、ADDを使用できません。代わりに、これを試してください:
alter table tbPedidos alter column restricoes as(キャスト(restricaoLicenca = 1またはrestricaoLote = 1またはrestricaoValor = 1 then 1 else 0がビットとして終了する場合))
編集:上記は不正解です。 計算済み列を変更する場合、canができることは、それをドロップして再度追加することだけです。
このようなもの:
ALTER TABLE dbo.MyTable
DROP COLUMN OldComputedColumn
ALTER TABLE dbo.MyTable
ADD OldComputedColumn AS OtherColumn + 10
これは、SQL Server Management Studioの diagram 機能を使用する方が簡単で高速な状況の1つです。
('')
または同等の無害なものに変更します(おそらく、列のデータ型を変更しないようにします)。SSMSでこのようにすると、テーブル内の列の順序が保持されますが、単純なdrop...add
では保証されません。これは一部の人にとって重要かもしれません。