S PostgreSQL 9.5 je to nyní nativní funkce (jako MySQL již několik let):
VLOŽTE... PŘI KONFLIKTU NEDĚLAT NIC/AKTUALIZOVAT ("UPSERT")
9.5 přináší podporu pro operace "UPSERT". INSERT je rozšířen o přijetí klauzule ON CONFLICT DO UPDATE/IGNORE. Tato klauzule specifikuje alternativní akci, kterou je třeba podniknout v případě možného duplicitního porušení.
...
Další příklad nové syntaxe:
INSERT INTO user_logins (username, logins)
VALUES ('Naomi',1),('James',1)
ON CONFLICT (username)
DO UPDATE SET logins = user_logins.logins + EXCLUDED.logins;