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

Indeks częściowy nie jest używany w klauzuli ON CONFLICT podczas wykonywania upsert w Postgresql

Musisz użyć predykatu indeksu, aby użyć częściowego unikalnego indeksu. Przeczytaj w dokumentacji:

index_predicate

Służy do wnioskowania o częściowych unikalnych indeksach. Można wywnioskować dowolne indeksy, które spełniają predykat (które w rzeczywistości nie muszą być indeksami częściowymi). Postępuje zgodnie z formatem CREATE INDEX.

W takim przypadku:

INSERT INTO key_value_pair (key, value, is_active) VALUES ('temperature','20', false) 
ON CONFLICT (key) WHERE is_active
DO UPDATE
SET value = '33', is_active = true;


  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, rekonfiguracja istniejącej tabeli, zmiana klucza podstawowego na type=serial

  2. Sterownik PostgreSQL 9.2 JDBC używa strefy czasowej klienta?

  3. Funkcja zwracająca dynamiczny zestaw kolumn dla danej tabeli

  4. Jak przekonwertować ciąg na datę w PostgreSQL

  5. Zaktualizuj lub wstaw (wiele wierszy i kolumn) z podzapytania w PostgreSQL