Và theo "dấu thời gian", bạn dường như muốn nói đến một khoảng thời gian nhất định .
ràng buộc loại trừ
trên loại phạm vi
, kết hợp với bình đẳng trên barid
(sử dụng mô-đun bổ sung btree_gist
) sẽ là giải pháp hoàn hảo.
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 &&)
);
Điều này yêu cầu Postgres 9.2 trở lên.
Có liên quan:
Sách hướng dẫn có ví dụ về mã phù hợp!