PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Problem integralności relacji „jeden do wielu” dla przedziałów czasowych

A przez „sygnaturę czasową” masz na myśli określony okres czasu .

ograniczenie wykluczenia w typie zakresu , w połączeniu z równością na barid (wykorzystując dodatkowy moduł btree_gist ) byłoby idealnym rozwiązaniem.

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

Wymaga to Postgresa 9.2 lub później.

Powiązane:

Podręcznik zawiera przykładowy pasujący kod!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ALTER zapytanie bardzo wolno na małej tabeli w PostgreSQL

  2. PostgreSQL, Npgsql zwraca 42601:błąd składni przy lub w pobliżu $1

  3. Identyfikator kolumny Doctrine nie istnieje w PostgreSQL

  4. Zaktualizuj kolumnę tabeli o kolumnę innej tabeli w PostgreSQL

  5. Lista kontrolna zgodności SOx dla PostgreSQL