Обсуждение: Currval function won't work
select currval('library.items_itemid_seq') as NextItemID;
ERROR: currval of sequence "items_itemid_seq" is not yet defined in this session
Note that the nextval function works as expected
select nextval('library.items_itemid_seq') as NextItemID;
2313
Can somebody please tell me what simple mistake I am making?
David
On Fri, Oct 07, 2005 at 04:54:13PM -0700, Bluebottle wrote:
> select currval('library.items_itemid_seq') as NextItemID;
> ERROR: currval of sequence "items_itemid_seq" is not yet defined in
> this session
currval() returns the value most recently obtained from nextval()
in the current session. If you haven't called nextval() yet then
you get the error above. Example:
test=> CREATE SEQUENCE foo_seq;
CREATE SEQUENCE
test=> SELECT currval('foo_seq');
ERROR: currval of sequence "foo_seq" is not yet defined in this session
test=> SELECT nextval('foo_seq');
nextval
---------
1
(1 row)
test=> SELECT currval('foo_seq');
currval
---------
1
(1 row)
> Note that the nextval function works as expected
>
> select nextval('library.items_itemid_seq') as NextItemID;
> 2313
You should be able to call currval() after calling nextval(). If
not then please tell us a little more about your environment, such
as whether you're using a connection pool.
--
Michael Fuhr
--- Bluebottle <luckychap@bluebottle.com> wrote:
> select currval('library.items_itemid_seq') as
> NextItemID;
> ERROR: currval of sequence "items_itemid_seq" is
> not yet defined in
> this session
>
> Note that the nextval function works as expected
>
> select nextval('library.items_itemid_seq') as
> NextItemID;
> 2313
>
> Can somebody please tell me what simple mistake I am
> making?
>
> David
David, I don't know the answer, but this is how i
would troubleshoot...
what happens when you try...
1. select currval('library.items_itemid_seq');
2. select currval('library.items_itemid_seq');
3. select currval('library.items_itemid_seq') as
NextItemID;
4. select currval('items_itemid_seq') as NextItemID;
do any of these work? do any break?
good luck.
__________________________________
Yahoo! Mail - PC Magazine Editors' Choice 2005
http://mail.yahoo.com
On 10/7/05 1:26 PM, "operationsengineer1@yahoo.com"
<operationsengineer1@yahoo.com> wrote:
>
>
> --- Bluebottle <luckychap@bluebottle.com> wrote:
>
>> select currval('library.items_itemid_seq') as
>> NextItemID;
>> ERROR: currval of sequence "items_itemid_seq" is
>> not yet defined in
>> this session
>>
>> Note that the nextval function works as expected
>>
>> select nextval('library.items_itemid_seq') as
>> NextItemID;
>> 2313
>>
>> Can somebody please tell me what simple mistake I am
>> making?
>>
>> David
>
> David, I don't know the answer, but this is how i
> would troubleshoot...
>
> what happens when you try...
>
> 1. select currval('library.items_itemid_seq');
>
> 2. select currval('library.items_itemid_seq');
>
> 3. select currval('library.items_itemid_seq') as
> NextItemID;
>
> 4. select currval('items_itemid_seq') as NextItemID;
>
> do any of these work? do any break?
From the documentation:
http://www.postgresql.org/docs/8.0/interactive/functions-sequence.html
currval
Return the value most recently obtained by nextval for this sequence in
the current session. (An error is reported if nextval has never been called
for this sequence in this session.) Notice that because this is returning a
session-local value, it gives a predictable answer whether or not other
sessions have executed nextval since the current session did.
Sean