Postgres 9.5 (publié depuis le 07/01/2016) propose une commande "upsert", également connue sous le nom de clause ON CONFLICT pour INSERT :
INSERT ... ON CONFLICT DO NOTHING/UPDATE
Il résout de nombreux problèmes subtils que vous pouvez rencontrer lors de l'utilisation d'une opération simultanée, ce que d'autres réponses proposent.