A przez „sygnaturę czasową” masz na myśli określony okres czasu .
ograniczenie wykluczenia
w typie zakresu
, w połączeniu z równością na barid
(wykorzystując dodatkowy moduł btree_gist
) byłoby idealnym rozwiązaniem.
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 &&)
);
Wymaga to Postgresa 9.2 lub później.
Powiązane:
Podręcznik zawiera przykładowy pasujący kod!