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

Kendala tumpang tindih tanggal postgres

Ok saya akhirnya melakukan ini :

CREATE TABLE test (
    from_ts TIMESTAMPTZ,
    to_ts TIMESTAMPTZ,
    account_id INTEGER DEFAULT 1,
    product_id INTEGER DEFAULT 1,
    CHECK ( from_ts < to_ts ),
    CONSTRAINT overlapping_times EXCLUDE USING GIST (
        account_id WITH =,
        product_id WITH =,
        period(from_ts, CASE WHEN to_ts IS NULL THEN 'infinity' ELSE to_ts END) WITH &&
    )
);

Bekerja sempurna dengan tak terhingga, bukti transaksi.

Saya baru saja menginstal ekstensi temporal yang akan menjadi asli di postgres 9.2 dan btree_gist tersedia sebagai ekstensi di 9.1 CREATE EXTENSION btree_gist;

nb :jika Anda tidak memiliki stempel waktu nol, tidak perlu menggunakan ekstensi temporal, Anda dapat menggunakan metode kotak seperti yang ditentukan dalam pertanyaan saya.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ikhtisar Kompilasi Just-in-Time (JIT) untuk PostgreSQL

  2. Hasilkan nomor acak dalam kisaran 1 - 10

  3. Cara menangani kesalahan Ruby on Rails:Silakan instal adaptor postgresql:`gem install activerecord-postgresql-adapter'

  4. Bagaimana make_timestamp() Bekerja di PostgreSQL

  5. Mengelola peran dan atribut peran di PostgreSQL