Postgres non ha implementato un equivalente a INSERT OR REPLACE
. Dal ON CONFLICT
docs (enfasi mia):
Può essere DO NOTHING o una clausola DO UPDATE che specifica i dettagli esatti dell'azione UPDATE da eseguire in caso di conflitto.
Sebbene non ti dia una scorciatoia per la sostituzione, ON CONFLICT DO UPDATE
si applica più in generale, poiché consente di impostare nuovi valori in base a dati preesistenti. Ad esempio:
INSERT INTO users (id, level)
VALUES (1, 0)
ON CONFLICT (id) DO UPDATE
SET level = users.level + 1;