currval(seq) fails if no nextval(seq) first - Mailing list pgsql-general

From Louis-David Mitterrand
Subject currval(seq) fails if no nextval(seq) first
Date
Msg-id 20000720105449.A1860@styx
Whole thread Raw
List pgsql-general
Hello,

I am trying to select the most recently inserted row in a table by
matching the id column with the current value of the sequence that
generated the id (I know this is not the best way to do it, because the
sequence might have holes in it). By the way what is the canonical way
of selecting the most recently inserted row in a table?

The strange thing is that currval() fails until nextval() is called on
the sequence. Is this normal?

Thanks in advance,

auction=# SELECT * FROM auction* WHERE login = 'vindex' AND id = currval('auction_id_seq');
ERROR:  auction_id_seq.currval is not yet defined in this session
auction=# select nextval('auction_id_seq');
 nextval
---------
      67
(1 row)

auction=# SELECT * FROM auction* WHERE login = 'vindex' AND id = currval('auction_id_seq');
 id | login | startdate | stopdate | description | startprice | reserveprice | category | imageurl | title | quantity |
created| modified | option | auto_renew | renew_count | private | dutch | accept_visa | accept_amex | accept_cheque |
accept_bank_transfer| accept_bank_cheque | ship_international | buyer_pays_shipping | currency  

----+-------+-----------+----------+-------------+------------+--------------+----------+----------+-------+----------+---------+----------+--------+------------+-------------+---------+-------+-------------+-------------+---------------+----------------------+--------------------+--------------------+---------------------+----------
(0 rows)

--
Louis-David Mitterrand - ldm@apartia.org - http://www.apartia.fr

Radioactive cats have 18 half-lives.

pgsql-general by date:

Previous
From: The Hermit Hacker
Date:
Subject: Re: Re: PostgreSQL vs MySQL
Next
From: Brook Milligan
Date:
Subject: Re: Re: [HACKERS] 8Ko limitation