Och med "tidsstämpel" verkar du mena en viss tidsperiod .
En uteslutningsrestriktion
på en intervalltyp
, kombinerat med likhet på barid
(använder tilläggsmodulen btree_gist
) skulle vara den perfekta lösningen.
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 &&)
);
Detta kräver Postgres 9.2 eller senare.
Relaterat:
Handboken har ett matchande kodexempel!