sql >> Databasteknik >  >> RDS >> PostgreSQL

PostgreSQL INSERT ON CONFLICT UPDATE (upsert) använd alla uteslutna värden

Postgres har inte implementerat en motsvarighet till INSERT OR REPLACE . Från ON CONFLICT docs (min betoning):

Det kan antingen vara DO INGENTING eller en DO UPDATE-klausul som anger de exakta detaljerna av UPDATE-åtgärden som ska utföras i händelse av en konflikt.

Även om det inte ger dig en stenografi för ersättning, ON CONFLICT DO UPDATE gäller mer generellt, eftersom det låter dig ställa in nya värden baserat på redan existerande data. Till exempel:

INSERT INTO users (id, level)
VALUES (1, 0)
ON CONFLICT (id) DO UPDATE
SET level = users.level + 1;



  1. Autoinkrement i oracle till redan skapad tabell

  2. Ändra säkerhetsgrupp på AWS RDS Database Instance

  3. PostgreSQL CASE ... AVSLUTA med flera villkor

  4. Kardinalitetsuppskattning för ett predikat på ett COUNT-uttryck