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

Jak dodać warunkowy unikalny indeks w PostgreSQL

Utwórz UNIQUE indeks wielokolumnowy w (product_id, variant_id) :

CREATE UNIQUE INDEX line_items_prod_var_idx ON line_items (product_id, variant_id);

Jednak pozwoliłoby to na wiele wpisów (1, NULL) dla (product_id, variant_id) ponieważ NULL wartości nie są uważane za identyczne.
Aby to zrekompensować, dodatkowo utwórz częściowy UNIQUE indeks na product_id :

CREATE UNIQUE INDEX line_items_prod_var_null_idx ON line_items (product_id)
WHERE variant_id IS NULL;

W ten sposób możesz wpisać (1,2) , (1,3) i (1, NULL) , ale żaden z nich nie po raz drugi. Przyspiesza także zapytania z warunkami w jednej lub obu kolumnach.

Niedawna, powiązana odpowiedź na dba.SE, prawie bezpośrednio odnosząca się do Twojej sprawy:

  • Unikatowe ograniczenie wielokolumnowe PostgreSQL i wartości NULL


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dopasuj frazę kończącą się prefiksem za pomocą wyszukiwania pełnotekstowego

  2. Pobrać rozmiar dużego obiektu w zapytaniu PostgreSQL?

  3. Skuteczna strategia pozostawiania śladu audytu/historii zmian dla aplikacji DB?

  4. Pula połączeń PostgreSQL:część 1 – zalety i wady

  5. Próbka tabel i inne metody uzyskiwania losowych krotek