sql >> Databasteknik >  >> RDS >> PostgreSQL

Partial Index används inte i ON CONFLICT-satsen när du utför en upsert i Postgresql

Du måste använda ett indexpredikat för att använda ett partiellt unikt index. Läs i dokumentationen:

index_predikat

Används för att tillåta slutledning av partiella unika index. Alla index som uppfyller predikatet (som faktiskt inte behöver vara partiella index) kan härledas. Följer CREATE INDEX-formatet.

I det här fallet:

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. EXISTS vs JOIN och användning av EXISTS-klausulen

  2. Oracle-schemaanvändare kan inte skapa tabell i proceduren

  3. Kontrollera statusen för alla databaspostmeddelanden i SQL Server (T-SQL)

  4. Gå själv med i orakel med exempel