15

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?

1
  • Sequences depends on session not on transaction. But it is not good to wait and execute other queries meanwhile, you may receive lastval of other query. Commented Jun 27, 2011 at 0:01

2 Answers 2

33

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.

Sign up to request clarification or add additional context in comments.

4 Comments

Thanks very much for this answer! Exactly what I needed, halves the number of queries I need to make for certain operations.
Thanks! BTW, if needed, you can return multiple values - RETURNING * will return the entire inserted row.
What if you don't know the name of the id field?
@JoePrivett, in normal applications that is not very realistic. Do you have a concrete case? If yes it would be better to post your own question where you explain your problem in more detail.
6

Yes, the sequence functions provide multiuser-safe methods for obtaining successive sequence values from sequence objects.

1 Comment

I'm so glad to see that sequences are now ANSI -- AUTOINCREMENT/IDENTITY are too limiting.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.