Re: postgres y java

From: "Jaime Casanova" <systemguards(at)gmail(dot)com>
To: "Luis Guevara" <luis(dot)a(dot)guevara(at)gmail(dot)com>
Cc: "Noe Sereno" <nsereno(at)oestesa(dot)com(dot)mx>, "Mario Gonzalez" <gonzalemario(at)gmail(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: postgres y java
Date: 2006-08-11 15:16:47
Message-ID: c2d9e70e0608110816v44e8e878q444d2e307dd8d235@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

On 8/11/06, Luis Guevara <luis(dot)a(dot)guevara(at)gmail(dot)com> wrote:
> Para obtener el último valor generado de una secuencia
>
> Hay alguna diferencia en usar esto:
> SELECT currval('nombre_secuencia');
>
> ¿ o esto ?
> SELECT last_value FROM 'nombre_secuencia';
>
> ¿ En todo caso cual es el más recomendable, asegurando una concurrencia alta
> ?
>

las secuencias viven mas alla de las transacciones asi que si usas el
segundo te puede retornar valores generados por otras transacciones
que no hayan terminado o que hayan terminado con rollback o
simplemente devolverte un valor que alguien mas genero cuando lo que
tu querias era el ultimo valor que *tu* insertastes.

currval() -- siempre te traera el ultimo valor que tu insertastes en
esta sesion
(solo puede usarse despues de nextval)
nextval() -- siempre te trae el siguiente valor valido mas alla de asi
alguien mas
esta generando valores para la misma secuencia

--
Atentamente,
Jaime Casanova

"Programming today is a race between software engineers striving to
build bigger and better idiot-proof programs and the universe trying
to produce bigger and better idiots.
So far, the universe is winning."
Richard Cook

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Martin 2006-08-11 16:06:39 Fwd: retorno de una funcion
Previous Message Jaime Casanova 2006-08-11 14:58:45 Re: retorno de una funcion