Se você precisar do PK da linha que acabou de inserir (ou qualquer expressão usando as colunas da tabela), você pode usar a cláusula RETURNING. Documentos:cláusula RETURNING
Por exemplo.
test=# create table a (id serial, val text);
NOTICE: CREATE TABLE will create implicit sequence "a_id_seq" for serial column "a.id"
CREATE TABLE
test=# insert into a (val) values ('foo') returning id;
id
----
1