"Martin A. Marques" wrote:
>
> Mensaje citado por: Kostis Mentzelos <mentzelos@ematic.com>:
>
> > Hi all,
> >
> > how can I get the current values from SERIAL types after an INSERT
> > using
> >
> > libpq?
>
> Don't know abou libpq, but the SERIAL type is managed by a sequence, and you can
> get the current value of the sequence (can't recall, but I guess it's current).
>
> Saludos... :-)
>
> P.D.: If I'm making an insert and after it I want to insert another value
> related with the serial inserted in the previous query to another table, which
> aproche is better:
>
> 1) Get the oid of the last insert and use it to find the INT in the serial
> column.
Yes, but if the table is large this may require an extra index
(for the oid field) to get reasonable performance...
The next solution is the good one:
> 2) Get the current value in the sequence (I guess this is very bad, cause while
> the first insert is finishing, another client can insert information on that
> column, changing the current value on the sequence).
Bad guess...
The values of the sequences are managed by the postmaster
so that they are 'session safe'.
The price to pay (and it should be taken into account) is
that the values of the secuence are not necessarily consecutive,
as seen from one session. Also, that rollbacks can lead to holes
in the secuence. This shouldn't be a problem, if (as is usually the
case)
the sequence is to be used as a unique identifier, not as a 'secuence'
proper...
Saludos
Hernán González
Buenos Aires, Argentina
> 3) another solution?
>
> System Administration: It's a dirty job,
> but someone told I had to do it.
> -----------------------------------------------------------------
> Martín Marqués email: martin@math.unl.edu.ar
> Santa Fe - Argentina http://math.unl.edu.ar/~martin/
> Administrador de sistemas en math.unl.edu.ar
> -----------------------------------------------------------------
>