I found a couple of other questions on this topic. This one...
mysql_insert_id alternative for postgresql
...and the manual seem to indicate that you can call lastval()
any time and it will work as expected. But this one...
Postgresql and PHP: is the currval a efficent way to retrieve the last row inserted id, in a multiuser application?
...seems to state that it has to be within a transaction. So my question is this: can I just wait as long as I like before querying for lastval()
(without a transaction)? And is that reliable in the face of many concurrent connections?
INSERT, UPDATE and DELETE in PostgreSQL have a RETURNING clause which means you can do:
INSERT INTO ....
RETURNING id;
Then the query will return the value it inserted for id for each row inserted. Saves a roundtrip to the server.
Yes, the sequence functions provide multiuser-safe methods for obtaining successive sequence values from sequence objects.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With