sql >> Database >  >> RDS >> PostgreSQL

'één-op-veel'-relatie-integriteitsprobleem voor tijdbereiken

En met "tijdstempel" bedoel je een bepaalde periode .

Een uitsluitingsbeperking op een bereiktype , gecombineerd met gelijkheid op barid (gebruikmakend van de extra module btree_gist ) zou de perfecte oplossing zijn.

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 &&)
);

Dit vereist Postgres 9.2 of later.

Gerelateerd:

De handleiding heeft een overeenkomend codevoorbeeld!



  1. Django admin MySQL traag INNERLIJKE JOIN

  2. Een tabelkolom hernoemen in Oracle 10g

  3. MySQL - Hoe voeg ik twee tabellen samen zonder duplicaten?

  4. sql voegt zich bij als venn-diagram