PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Índice parcial não usado na cláusula ON CONFLICT ao executar um upsert no Postgresql


Você precisa usar um predicado de índice para usar um índice exclusivo parcial. Leia na documentação:

índice_predicado

Usado para permitir a inferência de índices exclusivos parciais. Quaisquer índices que satisfaçam o predicado (que na verdade não precisam ser índices parciais) podem ser inferidos. Segue o formato CREATE INDEX.

Nesse 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;