I have three tables which are related a serial field, table1_id, in on of the tables. Updating the tables is done through a transaction. My problem is, once I have insert a row in the first tables with table1_id, I need for the other two tables. How can I get this? Is it safe to use "select max(table1_id) from table1" after the insert?
A SERIAL column is just an ordinary integer with a default of nextval(<sequence-name>).
All you need to do is: INSERT INTO t1 (...) VALUES (...) INSERT INTO t2 (...) VALUES (currval(<sequence-name-from-table1>)...)
Sequences are guaranteed to give values relevant to your current connection.
-- Richard Huxton Archonet Ltd
---------------------------(end of broadcast)--------------------------- TIP 9: the planner will ignore your desire to choose an index scan if your joining column's datatypes do not match