Re: Ultimo Id

From: Jaime Casanova <systemguards(at)gmail(dot)com>
To: "Guillermo O(dot) Burastero" <linux(dot)gb(at)gmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Ultimo Id
Date: 2005-11-22 22:27:38
Message-ID: c2d9e70e0511221427s401f8349p47b6df99ae7a9857@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

On 11/22/05, Guillermo O. Burastero <linux(dot)gb(at)gmail(dot)com> wrote:
> ---------- Forwarded message ----------
> From: Guillermo O. Burastero <linux(dot)gb(at)gmail(dot)com>
> Date: 22-nov-2005 19:15
> Subject: Re: [pgsql-es-ayuda] Ultimo Id
> To: Luis Fernando Curiel Cabrera <lcuriel(at)gmail(dot)com>
>
>
> El 22/11/05, Luis Fernando Curiel Cabrera<lcuriel(at)gmail(dot)com> escribió:
> > De que forma puedo saber el id del ultmo registro que inserte. Esto es
> > debido a que la relación de mis tablas es de 1 a N. Estoy usando
> >
> > SELECT last_value AS id FROM bssale_serial
> >
> Que tal si usas MAX(columna)
>
> SELECT MAX (Id) FROM tabla
>
> Suponiendo que Id es el nombre del campo llave y si tenés un índice
> sobre él la función MAX () usa el índice y es muy eficiente.
>

En postgres esto solo es cierto en el caso de la version 8.1 en adelante :)

en versiones anteriores se usaba esto para que use el indice:
SELECT id FROM tabla ORDER BY id DESC LIMIT 1; -- esto es = a max()
SELECT id FROM tabla ORDER BY id ASC LIMIT 1 -- esto es = a min()

> Nota: Esto no te da el último Id del registro que VOS insertaste, sinó
> el último que CUALQUIERA ha insertado.
>

el problema con hacer esto es que existe una condición de "carrera",
es decir que pasa si alguien inserta un registro justo despues de que
hicistes el SELECT? si tratas de insertar con ese numero te va a dar
error por clave duplicada y la unica forma de evitarlo es un LOCK
TABLE...

usando secuencias te evitas ese problema...

> --
> Guillermo O. Burastero
>
>
> --
> Guillermo O. Burastero
>
> ---------------------------(fin del mensaje)---------------------------
> TIP 7: no olvides aumentar la configuración del "free space map"
>

--
Atentamente,
Jaime Casanova
(DBA: DataBase Aniquilator ;)

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Diego Sanchez 2005-11-22 23:49:49 Ayuda con instalacion
Previous Message Guillermo O. Burastero 2005-11-22 22:16:45 Fwd: Ultimo Id