フィールドfrom=dateおよびto=dateを必要とする SQL テーブルを作成していますが、 toがfrom の前にならないように制約を設定したいと考えています。私のプログラムはそれをチェックしますが、SQL で強制する方法を知りたいです。以前に SQL を書いたことがありますが、制約を実際に使用したことがなく、それらがどのように機能するかわかりません。
問題は、標準 SQL を使用して、FromがToの前にあることを確認するにはどうすればよいかということです。
フィールドfrom=dateおよびto=dateを必要とする SQL テーブルを作成していますが、 toがfrom の前にならないように制約を設定したいと考えています。私のプログラムはそれをチェックしますが、SQL で強制する方法を知りたいです。以前に SQL を書いたことがありますが、制約を実際に使用したことがなく、それらがどのように機能するかわかりません。
問題は、標準 SQL を使用して、FromがToの前にあることを確認するにはどうすればよいかということです。
create table foo
(
from_date date,
to_date date,
constraint check_dates check (from_date < to_date)
);
または、これを既存のテーブルに適用する必要がある場合は、次を使用します。
alter table foo
add constraint check_dates check (from_date < to_date);
PostgreSQLのマニュアルには、チェック制約に関する優れた章が含まれています:http ://www.postgresql.org/docs/current/static/ddl-constraints.html#AEN2410
これはSQLサーバー、mysql、Oracleでは問題ないと思います
ALTER TABLE myTbl
ADD CONSTRAINT chk_Dates CHECK (dtFrom < dtTo)