Und mit "Zeitstempel" meinen Sie anscheinend einen bestimmten Zeitraum .
Eine Ausschlussbeschränkung
auf einem Bereichstyp
, kombiniert mit Gleichheit bei barid
(unter Verwendung des zusätzlichen Moduls btree_gist
) wäre die perfekte Lösung.
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 &&)
);
Dies erfordert Postgres 9.2 oder später.
Verwandte:
Das Handbuch enthält ein passendes Codebeispiel!