また、「タイムスタンプ」とは、特定の期間を意味しているようです。 。
除外制約
範囲タイプ
、barid
の平等と組み合わせる (追加モジュール btree_gist
を利用する
)は完璧な解決策になります。
CREATE EXTENSION btree_gist; -- needed once per database
CREATE TABLE foo (
fooid serial PRIMARY KEY
, barid integer NOT NULL REFERENCES bar(barid)
, bazid integer NOT NULL REFERENCES baz(bazid)
, time_range tsrange NOT NULL -- replaces startdate & enddate
, EXCLUDE USING gist (barid WITH =, time_range WITH &&)
);
これにはPostgres9.2が必要です またはそれ以降。
関連: