PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Batasan postgres untuk rentang tanggal waktu yang unik

Anda dapat menyimpan timestamp yang terpisah kolom dan masih menggunakan batasan pengecualian pada ekspresi:

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

Membuat tsrange nilai tanpa batas eksplisit sebagai tsrange(starts_at, ends_at) secara otomatis mengasumsikan batas default:termasuk bawah dan tidak termasuk atas - '[)' , yang biasanya terbaik.

SQL Fiddle.

Terkait:

  • Mencegah entri yang berdekatan/tumpang tindih dengan EXCLUDE di PostgreSQL

Tambahkan batasan ke tabel yang ada

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

Detail sintaks sama dengan 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. Bagaimana cara saya bekerja dengan desimal presisi tinggi di PHP

  2. Mengekspor database PostgreSQL dengan phpPgAdmin

  3. Tidak dapat menghubungkan PostgreSQL ke basis data jarak jauh menggunakan pgAdmin

  4. Batasan kunci asing yang kompleks di SQLAlchemy

  5. Bagaimana cara membuat kueri case-insensitive di Postgresql?