Jeśli potrzebujesz PK właśnie wstawionego wiersza (lub dowolnego wyrażenia używającego kolumn tabeli), możesz użyć klauzuli RETURNING. Dokumenty:klauzula ZWROTU
Np.
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