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;