Postgres не е внедрил еквивалент на INSERT OR REPLACE
. От ON CONFLICT
документи (подчертавам мое):
Тя може да бъде или НАПРАВИ НИЩО, или клауза DO UPDATE, указваща точните подробности на действието UPDATE, което да се извърши в случай на конфликт.
Въпреки че не ви дава стенография за замяна, ON CONFLICT DO UPDATE
се прилага по-общо, тъй като ви позволява да задавате нови стойности въз основа на вече съществуващи данни. Например:
INSERT INTO users (id, level)
VALUES (1, 0)
ON CONFLICT (id) DO UPDATE
SET level = users.level + 1;