W postgresie możesz to zrobić na dwa sposoby:
Założenie mam takie, że korzystasz z sekwencji do tworzenia kluczy głównych w tabelach (podobnie jak AUTO_INCREMENT w MySQL)
I. Najpierw robisz zapytanie o kolejną wartość w sekwencji, czyli przykładowo:
SELECT NEXTVAL('nazwa_sekwencji);
Wynik tego selekta zapisujesz sobie do zmiennej a następnie robisz "INSERT" z użyciem tej wartości.
Przykład z wykorzystaniem AdoDB:
// "rezerwujemy" identyfikator, który już nikt kto używa sekwencji go nie użyje
$idProduktu = $db->GetOne("SELECT nextval('produkt_id_produkt_seq'::regclass);");
// i z niego korzystamy:
$db->Execute("INSERT INTO produkt (id_produkt, nazwa, cena) VALUES ($idProduktu, 'Ptasie Mleczko', '3');");
// identyfikator wprowadzonej krotki masz w $idProduktu
II Przykład chyba bardziej prosty

użycie
RETURNINGprzykład zapytania
INSERT INTO produkt (nazwa, cena) VALUES ('Ptasie Mleczko', '3') RETURNING id_produkt;
Myślę, że pomoże
Pozdrawiam
Cezar708