チェック制約は他のテーブルを参照できますか?
多くのデータベースは、データの整合性を強制する手段としてチェック制約をサポートしています。これらの制約を使用すると、テーブルにデータを挿入またはテーブルで更新するために満たす必要がある条件を指定できます。
ProjectTimeSpan と SubProjectTimeSpan という 2 つのテーブルがあるシナリオを考えてみましょう。 >。各テーブルには StartDate 列と EndDate 列が含まれています。 SubProjectTimeSpan に、StartDate と EndDate の値が ProjectTimeSpan.StartDate と の範囲内に収まるようにするチェック制約を作成したいと考えています。 ProjectTimeSpan.EndDate range.
そのようなチェック制約は可能ですか?
はい、関数を使用してそのような制約を作成することができます。 SQL Server 構文を使用した例を次に示します。
alter table SubProjectTimeSpan add constraint chk_CheckFunction check (dbo.CheckFunction() = 1)
この例では、dbo.CheckFunction() は、StartDate と EndDate の値SubProjectTimeSpan は、ProjectTimeSpan.StartDate と ProjectTimeSpan.EndDate の範囲内にあります。関数の実装例を次に示します。
create function dbo.CheckFunction() returns int as begin return (select 1 where exists(select 1 from ProjectTimeSpan where StartDate <= SubProjectTimeSpan.StartDate and EndDate >= SubProjectTimeSpan.EndDate)) end
ProjectTimeSpan テーブルを参照します。関数を使用すると、他のテーブルの値を参照するチェック制約を作成でき、複数のテーブル間でデータの整合性を柔軟に強化できます。
以上がチェック制約は SQL データベース内の他のテーブルを参照できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。