PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Indice parziale non utilizzato nella clausola ON CONFLICT durante l'esecuzione di un upsert in Postgresql

È necessario utilizzare un predicato di indice per utilizzare un indice univoco parziale. Leggi nella documentazione:

indice_predicato

Utilizzato per consentire l'inferenza di indici univoci parziali. Tutti gli indici che soddisfano il predicato (che non devono essere effettivamente indici parziali) possono essere dedotti. Segue il formato CREATE INDEX.

In questo caso:

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;