From: | Onno Molenkamp <onno(at)flox(dot)org> |
---|---|
To: | pgsql-general(at)postgresql(dot)org |
Subject: | currval() in insert statements |
Date: | 2009-02-14 11:25:59 |
Message-ID: | 200902141225.59304.onno@flox.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Hi,
I recently upgraded a database from 8.1.11 to 8.3.6, and I noticed the
following statement stopped working:
insert into test (b) select currval('test_a_seq'::regclass)
given the following table:
create table test (a serial, b int)
The error I'm getting is: "ERROR: currval of sequence "test_a_seq" is not yet
defined in this session". With a values clause instead of a select, it still
works as expected, by inserting two identical values:
insert into test (b) values (currval('test_a_seq'::regclass))
Although it's easy enough to work around this problem by also explicitly
inserting nextval('test_a_seq'::regclass) into column "a", I'm wondering why
it did work in 8.1 and doesn't work anymore in 8.3.
Is this a bug in either version, was is never supposed to work like this, or
have I missed a change in the release notes somewhere?
Thanks,
Onno
From | Date | Subject | |
---|---|---|---|
Next Message | Grzegorz Jaśkiewicz | 2009-02-14 13:41:44 | Re: currval() in insert statements |
Previous Message | Grzegorz Jaśkiewicz | 2009-02-14 11:25:14 | Re: select max from subquery |