Обсуждение: working with sequences
Hello
I have some troubles when work with sequences. I porting code from oracle
to pgsql, adding suppport for new database.
I start one big transaction where i insert many records in various tables.
Most of inserts look like:
insert into rfc822_address (id, addr_spec, personal, adl, error) values (nextval('rfc822_address_seq'), ?, ?, ?,
?)
and after insert i need get current value of sequence
'rfc822_address_seq'. I do this with
select currval('rfc822_addr_spec_seq')
but sometimes this query return none and my programm crash. This offten
happen after 2-3 call of nextval
Is anybody can help me?
--
With best wishes, Alex Ott Jet Infosystems
Alex Ott <ott@jet.msk.su> writes:
> and after insert i need get current value of sequence
> 'rfc822_address_seq'. I do this with
> select currval('rfc822_addr_spec_seq')
> but sometimes this query return none and my programm crash. This offten
> happen after 2-3 call of nextval
This is quite hard to believe; if currval() has succeeded once then
I don't see how it could fail later on in the same session.
Are you sure you are passing the same sequence name each time?
currval will fail if asked about a sequence name that hasn't
been nextval'd earlier in the current session.
regards, tom lane