関数を使用したチェック制約の定義
複数のテーブルを操作する場合、テーブル全体のデータの整合性を確保することが必要になる場合があります。これを実現する 1 つの方法は、チェック制約を使用することです。しかし、チェック制約を別のテーブルに関連付けて、データを効果的に相互参照することはできますか?
課題と解決策
2 つのテーブルがあるシナリオを考えてみましょう: 列のある ProjectTimeSpan StartDate と EndDate、および StartDate 列と EndDate 列も含まれる SubProjectTimeSpan。 SubProjectTimeSpan の日付が ProjectTimeSpan の日付から外れないようにチェック制約を適用するにはどうすればよいですか?
その答えは、チェック制約定義内の関数を利用することにあります。 ProjectTimeSpan から関連データを取得する関数を作成することで、SubProjectTimeSpan の値をそれに対して検証できます。
例
関数を使用したチェック制約の例を次に示します。 :
alter table YourTable add constraint chk_CheckFunction check (dbo.CheckFunction() = 1)
この例では、 dbo.CheckFunction() 関数は、 ProjectTimeSpan に対する SubProjectTimeSpan の値。関数定義は次のようなものになります。
create function dbo.CheckFunction() returns int as begin return (select 1 where ...) -- Your validation logic goes here end
この関数を使用すると、ProjectTimeSpan からのデータを相互参照し、SubProjectTimeSpan テーブル データの整合性を検証できます。
以上がチェック制約は関数を使用してテーブル間でデータを相互参照できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。