Postgres 9.5 (släppt sedan 2016-01-07) erbjuder ett "upsert"-kommando, även känt som en ON CONFLICT-sats att INSERT:
INSERT ... ON CONFLICT DO NOTHING/UPDATE
Det löser många av de subtila problem du kan stöta på när du använder samtidig drift, vilket vissa andra svar föreslår.