currval() in insert statements

Поиск
Список
Период
Сортировка
От Onno Molenkamp
Тема currval() in insert statements
Дата
Msg-id 200902141225.59304.onno@flox.org
обсуждение исходный текст
Ответы Re: currval() in insert statements  (Grzegorz Jaśkiewicz <gryzman@gmail.com>)
Re: currval() in insert statements  (Raymond O'Donnell <rod@iol.ie>)
Re: currval() in insert statements  (Tom Lane <tgl@sss.pgh.pa.us>)
Re: currval() in insert statements  (Craig Ringer <craig@postnewspapers.com.au>)
Список 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

Вложения

В списке pgsql-general по дате отправления:

Предыдущее
От: Grzegorz Jaśkiewicz
Дата:
Сообщение: Re: select max from subquery
Следующее
От: Grzegorz Jaśkiewicz
Дата:
Сообщение: Re: currval() in insert statements