2016-12-24 6 views
-2

テーブルAの列「日付」、テーブルBの「開始日」および「締め切り」の列があります。 "Date "表A(「開始日」と「締切日」の間)? 私はSQL Server 2014を使用しています。 あなたのおかげでありがとう:D2つのテーブルから値をチェックする制約を追加する方法

+0

トリガーにこの機能を追加しますか? – GurV

+0

あなたはそれを説明できますか?D –

+0

'before update or insert'トリガを作成し、内容を確認します。有効でない場合は、RAISERRORを使用してエラーを発生させてください – GurV

答えて

0

トリガーは最後のオプションとしてのみ使用してください。この場合、チェック制約を使う方が好きです。まず、tableBの渡された日付の値をチェックして0または1を返す関数を作成します。

ALTER FUNCTION [dbo].[checkDate] 
    (@dt datetime) 
RETURNS bit 
AS 

BEGIN 

IF EXISTS 
      (
       SELECT * 
       FROM TableB 
       WHERE checkDate is between [Starting Date] and [Deadline] 
      ) 
      RETURN 1 
    RETURN 0 
END 

そして、TableAのチェックconstaint多分

ALTER TABLE [dbo].[TableA] 
WITH NOCHECK ADD CHECK (([dbo].[checkDate]([Date1])=(0))) 
関連する問題