startDate
が より遅くないことを確認する必要があるテーブルがありますendDate
。
どちらの日付も更新できるため、入力/変更のstartDate
有無endDate
(またはその両方) に関係なくルールを適用する必要があります。
トリガー、ストアド プロシージャ、または何か他のものを使用する方が良いですか? サンプル構文は大歓迎です。
startDate
が より遅くないことを確認する必要があるテーブルがありますendDate
。
どちらの日付も更新できるため、入力/変更のstartDate
有無endDate
(またはその両方) に関係なくルールを適用する必要があります。
トリガー、ストアド プロシージャ、または何か他のものを使用する方が良いですか? サンプル構文は大歓迎です。
チェック制約を使用します。トリガーよりもはるかに簡単です。
CREATE TABLE dbo.foo
(
StartDate DATE NOT NULL,
EndDate DATE NOT NULL,
CONSTRAINT CheckEndLaterThanStart CHECK (EndDate >= StartDate)
);
テーブルがすでに存在する場合:
ALTER TABLE dbo.foo
ADD CONSTRAINT CheckEndLaterThanStart
CHECK (EndDate >= StartDate);
終了日より後の開始日を挿入しようとすると、次のようになります。
メッセージ 547、レベル 16、状態 0、行 1
INSERT ステートメントが CHECK 制約 "CheckEndLaterThanStart" と競合しました。データベース「AdventureWorks2012」、テーブル「dbo.foo」で競合が発生しました。
ステートメントは終了されました。