SQL Serverを使用しています。列と小切手制約を追加しようとしています。次の作品を見つけました。
ALTER TABLE table.column
ADD isTrue BIT
GO
ALTER TABLE table.column
ADD CONSTRAINT CK_table_isTrue CHECK ((isTrue = 1 AND column1 = 0 AND column2 = 0 AND column3 IS NULL) OR isTrue = 0)
_
しかし、これを書くことの詳細な方法はうまくいきません。
ALTER TABLE table.column
ADD isTrue BIT
CONSTRAINT CK_table_isTrue CHECK ((isTrue = 1 AND column1 = 0 AND column2 = 0 AND column3 IS NULL) OR isTrue = 0)
_
次のエラーが出力されます。
列チェック制約列 'istrue'は別の列、テーブル 'Table'を参照しています。
ドキュメントとSO)これが事件の理由を判断できませんでした
あなたの構文は非常に正しくありません。複数の列を参照する制約はテーブル制約です。テーブル制約を追加しようとしているので、ISTRUEのデータ型定義の後にコンマが必要です。
ALTER TABLE table.column
ADD isTrue BIT,
CONSTRAINT CK_table_isTrue CHECK ((isTrue = 1 AND column1 = 0 AND column2 = 0 AND column3 IS NULL) OR isTrue = 0);
_
コンマSQL Serverがなくても、列制約を追加しようとしていると考えていると考えています。