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

PostgreSQL 9.4 - Gunakan operator khusus dalam batasan EXCLUDE

Anda memilih cobaan yang nyata. Gunakan indeks unik, yang jauh lebih sederhana, lebih aman, dan lebih cepat.

CREATE TABLE foo (
    foo_id serial PRIMARY KEY,
    foo text NOT NULL,
    bar timestamptz,
    baz timestamptz
);
CREATE TABLE

CREATE UNIQUE INDEX foo_foo_bar_baz_idx ON foo 
(foo, coalesce(bar, 'infinity'), coalesce(baz, 'infinity'));
CREATE INDEX

INSERT INTO foo VALUES
(default, '', null, null),
(default, '', now(), null),
(default, '', null, now());
INSERT 0 3

INSERT INTO foo VALUES
(default, '', null, null);
ERROR:  duplicate key value violates unique constraint "foo_foo_bar_baz_idx"
DETAIL:  Key (foo, (COALESCE(bar, 'infinity'::timestamp with time zone)), (COALESCE(baz, 'infinity'::timestamp with time zone)))=(, infinity, infinity) already exists.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Penggantian substring PostgreSQL UPDATE

  2. Bagaimana mengurutkan objek ke dalam ember dirumuskan sebagai ekspresi JPQL yang valid?

  3. Kesalahan Pycharm:Tidak dikonfigurasi dengan benar

  4. Batasan postgres untuk rentang tanggal waktu yang unik

  5. Memasukkan array ke dalam postgresql