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

PostgreSQL 9.4 - Użyj operatora niestandardowego w ograniczeniu EXCLUDE

Wybrałeś prawdziwą próbę. Użyj unikalnego indeksu, który jest znacznie prostszy, bezpieczniejszy i szybszy.

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. postgresql postgis Jeśli punkt wewnątrz okręgu

  2. Zrezygnuj z roli z uprawnieniami

  3. Jak znaleźć i usunąć niektóre tabele z bazy danych PostgreSQL

  4. Standaryzacja bezpieczeństwa PostgreSQL w środowiskach wielochmurowych

  5. BŁĄD:odmowa uprawnień dla schematu user1_gmail_com o znaku 46