sql >> Database teknologi >  >> RDS >> PostgreSQL

'en-til-mange' relationsintegritetsproblem for tidsintervaller

Og med "tidsstempel" ser du ud til at mene en vis periode .

En ekskluderingsbegrænsning på en intervaltype , kombineret med lighed på barid (ved at bruge det ekstra modul btree_gist ) ville være den perfekte løsning.

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

Dette kræver Postgres 9.2 eller senere.

Relateret:

Manualen har et matchende kodeeksempel!



  1. Tilslutning af en 32-bit applikation til jBASE

  2. SQL-injektionsangreb med php

  3. Udfyld gruppedata til en bestemt serie på Highcharts

  4. Formater dato i MySQL SELECT som ISO 8601