И под „клеймо за време“ изглежда имате предвид определен период от време .
ограничение за изключване
на тип диапазон
, комбинирано с равенство на 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 &&)
);
Това изисква Postgres 9.2 или по-късно.
Свързани:
Ръководството има пример за съответстващ код!