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;