これはおそらく簡単な答えですが、見つかりません。整数の列を持つテーブルがあり、行が挿入されたときに、この列の値がゼロより大きいことを確認したいと考えています。コード側でこれを行うこともできましたが、テーブルで強制するのが最善だと考えました。
ありがとう!
前回のコメントに誤りがありましたが、今はすべて問題ありません。
これはおそらく簡単な答えですが、見つかりません。整数の列を持つテーブルがあり、行が挿入されたときに、この列の値がゼロより大きいことを確認したいと考えています。コード側でこれを行うこともできましたが、テーブルで強制するのが最善だと考えました。
ありがとう!
前回のコメントに誤りがありましたが、今はすべて問題ありません。
列にチェック制約を使用できます。IIRC の構文は次のようになります。
create table foo (
[...]
,Foobar int not null check (Foobar > 0)
[...]
)
以下のポスターが言うように (Constantin に感謝します)、テーブル定義の外にチェック制約を作成し、意味のある名前を付けて、適用される列が明確になるようにする必要があります。
alter table foo
add constraint Foobar_NonNegative
check (Foobar > 0)
のシステム データ ディクショナリからチェック制約のテキストを取得できますsys.check_constraints
。
select name
,description
from sys.check_constraints
where name = 'Foobar_NonNegative'
データベース制約を作成します。
ALTER TABLE Table1 ADD CONSTRAINT Constraint1 CHECK (YourCol > 0)
複数の列を含む、かなり洗練された制約を設定することもできます。例えば:
ALTER TABLE Table1 ADD CONSTRAINT Constraint2 CHECK (StartDate<EndDate OR EndDate IS NULL)
CHECK
テーブルの作成時に制約を追加する
CREATE TABLE Test(
[ID] [int] NOT NULL,
[MyCol] [int] NOT NULL CHECK (MyCol > 1)
)
テーブルフィールドに CONSTRAINT を追加したいと思います:
ALTER TABLE tableName WITH NOCHECK
ADD CONSTRAINT constraintName CHECK (columnName > 0)
そのオプションの NOCHECK は、制約が既存のデータ行 (無効なデータを含む可能性がある) に適用されないようにするために使用され、制約を追加できるようにします。