create table t1 (id uuid, data text, primary key (id)); WITH upsert AS (UPDATE t1 SET data = 'test' WHERE id='ad400a94-ad7a-4375-92c6-7294e3e4ce6d' RETURNING id) INSERT INTO t1 (id, data) SELECT 'ad400a94-ad7a-4375-92c6-7294e3e4ce6d', 'test' WHERE NOT EXISTS (SELECT true FROM upsert); BEGIN; WITH upsert AS (UPDATE t1 SET data = 'test' WHERE id='ad400a94-ad7a-4375-92c6-7294e3e4ce6d' RETURNING id) INSERT INTO t1 (id, data) SELECT 'ad400a94-ad7a-4375-92c6-7294e3e4ce6d', 'test' WHERE NOT EXISTS (SELECT true FROM upsert); -- In separate session WITH upsert AS (UPDATE t1 SET data = 'test' WHERE id='ad400a94-ad7a-4375-92c6-7294e3e4ce6d' RETURNING id) INSERT INTO t1 (id, data) SELECT 'ad400a94-ad7a-4375-92c6-7294e3e4ce6d', 'test' WHERE NOT EXISTS (SELECT true FROM upsert); -- In original session END;