Postgres neimplementoval ekvivalent INSERT OR REPLACE
. Z ON CONFLICT
docs (důraz můj):
Může to být buď DO NOTHING, nebo DO UPDATE klauzule specifikující přesné podrobnosti akce UPDATE, která se má provést v případě konfliktu.
Ačkoli vám neposkytne zkratku pro výměnu, ON CONFLICT DO UPDATE
platí obecněji, protože umožňuje nastavit nové hodnoty na základě již existujících dat. Například:
INSERT INTO users (id, level)
VALUES (1, 0)
ON CONFLICT (id) DO UPDATE
SET level = users.level + 1;