sql >> Database >  >> RDS >> PostgreSQL

Postgres-beperking voor uniek datum- en tijdbereik

U kunt uw aparte timestamp . behouden kolommen en gebruik nog steeds een uitsluitingsbeperking op een uitdrukking:

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

Een tsrange maken waarde zonder expliciete grenzen als tsrange(starts_at, ends_at) neemt automatisch standaardgrenzen aan:inclusief onder en exclusief boven - '[)' , wat meestal het beste is.

SQL Fiddle.

Gerelateerd:

  • Aangrenzende/overlappende items voorkomen met EXCLUDE in PostgreSQL

Beperking toevoegen aan bestaande tabel

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

Syntaxisdetails zijn hetzelfde als voor CREATE TABLE .




  1. SQLite-opdrachten

  2. Afbeeldingen uploaden in CKEditor zonder een plug-in te gebruiken

  3. Verschil tussen SET autocommit=1 en START TRANSACTION in mysql (Heb ik iets gemist?)

  4. Converteer 'datetime' naar 'datetime2' in SQL Server (T-SQL-voorbeelden)