Re: [ADMIN] performance issue using DBI

Поиск
Список
Период
Сортировка
От Dan Langille
Тема Re: [ADMIN] performance issue using DBI
Дата
Msg-id 20020606163524.D685F3F28@bast.unixathome.org
обсуждение исходный текст
Ответ на Re: performance issue using DBI  (Oliver Elphick <olly@lfix.co.uk>)
Список pgsql-general
On 6 Jun 2002 at 17:14, Oliver Elphick wrote:

> On Thu, 2002-06-06 at 14:55, Joshua b. Jore wrote:u
> >       Don't use currval since some other process might alter the
> > sequence between the time you call nextval and currval.
>
> This is wrong.  currval() will always return the last serial assigned in
> *the*same*session*.  It is not affected by other users at all.

Folks, here's a short test which might help.  Note the BEGIN.

$ psql testing
testing=# create sequence test;
CREATE
testing=# select currval('test');
ERROR:  test.currval is not yet defined in this session
testing=# select setval('test', 1);
 setval
--------
      1
(1 row)

testing=# select currval('test');
 currval
---------
       1
(1 row)

testing=# select currval('test');
 currval
---------
       1
(1 row)

testing=# select currval('test');
 currval
---------
       1
(1 row)

testing=# select currval('test');
 currval
---------
       1
(1 row)

testing=#

Then, in another window, I did this:

$ psql testing
# select nextval('test');
 nextval
---------
       2
(1 row)

testing=# select nextval('test');
 nextval
---------
       3
(1 row)

testing=# select nextval('test');
 nextval
---------
       4
(1 row)

testing=#

Then back to the other window:

testing=# select currval('test');
 currval
---------
       1
(1 row)

testing=# select nextval('test');
 nextval
---------
       5
(1 row)

testing=#

cheers

FWIW: I always use nextval when looking for a new ID.
--
Dan Langille


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

Предыдущее
От: "SHELTON,MICHAEL (Non-HP-Boise,ex1)"
Дата:
Сообщение: Re: [HACKERS] PostgreSQL and Windows2000 and defunct processes
Следующее
От: "Lee Green"
Дата:
Сообщение: Re: [ADMIN] performance issue using DBI