Re: Postgresql - Currval Vs Session Pool
От | Albe Laurenz |
---|---|
Тема | Re: Postgresql - Currval Vs Session Pool |
Дата | |
Msg-id | A737B7A37273E048B164557ADEF4A58B17BB0730@ntex2010a.host.magwien.gv.at обсуждение исходный текст |
Ответ на | Postgresql - Currval Vs Session Pool (Gustavo Amarilla Santacruz <gusamasan@gmail.com>) |
Ответы |
Re: Postgresql - Currval Vs Session Pool
|
Список | pgsql-general |
Gustavo Amarilla Santacruz wrote: > In the PostgreSQL documentation I found "currval: Return the value most recently obtained by nextval > for this sequence in the current session ...." > > In other documentations (pgpool, for example), I found "Connection Pooling > pgpool-II saves connections to the PostgreSQL servers, and reuse them whenever a new connection with > the same properties (i.e. username, database, protocol version) comes in. It reduces connection > overhead, and improves system's overall throughput" > > Then, I have the following question: PostgreSQL differentiates between sessions created for the same > user? > > Background > ========== > - I, traditionalmente, have several user in a web application (user table, for example); but I use > only one postgresql-db-user to get connetions to database > > - If a CREATE (CRUD) operation uses a head-detail couple of tables, then in a transaction: data in > HEAD table is inserted; next, the value for the primary key is achieved from currval function; next > references to head table is inserted in detail table. "currval" will return a different value or an error message if the query happens to use a different session than the one that you used for "nextval". The best way to solve this is the INSERT ... RETURNING statement, like in INSERT INTO t VALUES (...) RETURNING id, which will return new value of the automatically generated column. Yours, Laurenz Albe
В списке pgsql-general по дате отправления: