sql >> Database >  >> RDS >> PostgreSQL

Gedeeltelijke index niet gebruikt in ON CONFLICT-clausule tijdens het uitvoeren van een upsert in Postgresql

U moet een indexpredikaat gebruiken om een ​​gedeeltelijke unieke index te gebruiken. Lees in de documentatie:

index_predicaat

Gebruikt om gevolgtrekking van gedeeltelijke unieke indexen mogelijk te maken. Alle indexen die voldoen aan het predikaat (die eigenlijk geen gedeeltelijke indexen hoeven te zijn) kunnen worden afgeleid. Volgt het CREATE INDEX-formaat.

In dit geval:

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. De beste manier om periodiek Oracle-query's uit te voeren

  2. Oracle PLS-00363:uitdrukking '' kan niet worden gebruikt als toewijzingsdoel

  3. Uitzondering voor het gooien van transacties op dit platform ondersteunt geen gedistribueerde transacties tijdens het openen van het verbindingsobject

  4. MySQL #1093 - U kunt geen 'weggeefacties' voor de doeltabel specificeren voor update in de FROM-clausule