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

Ograniczenie Postgresa dla unikalnego zakresu dat

Możesz zachować swój oddzielny timestamp kolumn i nadal używa ograniczenia wykluczenia na wyrażeniu:

CREATE TABLE tbl (
   tbl_id    serial PRIMARY KEY
 , starts_at timestamp
 , ends_at   timestamp
 , EXCLUDE USING gist (tsrange(starts_at, ends_at) WITH &&) -- no overlapping
);

Konstruowanie tsrange wartość bez wyraźnych granic jako tsrange(starts_at, ends_at) automatycznie przyjmuje domyślne granice:włączając dolne i wyłączając górne - '[)' , co zazwyczaj jest najlepsze.

Skrzypce SQL.

Powiązane:

  • Zapobieganie sąsiednim/nakładającym się wpisom za pomocą EXCLUDE w PostgreSQL

Dodaj ograniczenie do istniejącej tabeli

ALTER TABLE tbl ADD CONSTRAINT tbl_no_overlapping_time_ranges
EXCLUDE USING gist (tsrange(starts_at, ends_at) WITH &&)

Szczegóły składni są takie same jak w przypadku CREATE TABLE .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zezwolić na zdalny dostęp do bazy danych PostgreSQL

  2. Programowo generuj DDL w Postgresql

  3. Funkcja LPAD() w PostgreSQL

  4. Nie można połączyć postgreSQL z psycopg2

  5. Psql nie mógł połączyć się z serwerem:Brak takiego pliku lub katalogu, błąd 5432?