Обсуждение: working with sequences

Поиск
Список
Период
Сортировка

working with sequences

От
Alex Ott
Дата:
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




Re: working with sequences

От
Tom Lane
Дата:
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