David Horwitz <Dhorwitz(at)ched(dot)uct(dot)ac(dot)za> writes:
> Actually the issue is b) is multi-user safe
> *if* you have an exclusive lock on the table. If you don't it is quite
> possible for a user to insert an other record between your insertion and the
> currval() call
False. Option B is multi-user safe, period. The reason is that currval
returns the value last obtained by nextval *in your own session*,
independently of what anyone else has done meanwhile.
I tend to prefer option A (select nextval and insert) myself, just
because it seems more intuitive. But if that's not convenient for
some reason, option B works fine too.
regards, tom lane