"rob" <rob@cabrion.com> writes:
> currval returns error unless nextval has been called at least once in the
> session.
> I use <seq>.last_value
> Perhaps I'm fooling myself
Yes, you are, unless you never have more than one client attached to
your database. last_value will return whatever value was last assigned
by any backend, therefore you might not get the value that was inserted
into your tuple, but someone else's.
The point about currval being initially undefined seems moot if what
you're using it for is to recover the serial number that was assigned to
a tuple you just inserted ...
regards, tom lane