Postgres nie zaimplementował odpowiednika INSERT OR REPLACE
. Z ON CONFLICT
dokumenty (podkreślenie moje):
Może to być klauzula DO NIC lub DO UPDATE określająca dokładne szczegóły akcji UPDATE, która ma zostać wykonana w przypadku konfliktu.
Chociaż nie daje skrótu do wymiany, ON CONFLICT DO UPDATE
ma zastosowanie bardziej ogólnie, ponieważ pozwala ustawić nowe wartości na podstawie istniejących danych. Na przykład:
INSERT INTO users (id, level)
VALUES (1, 0)
ON CONFLICT (id) DO UPDATE
SET level = users.level + 1;