Re: Conocer el id después de insertar un registro nuevo

From: Arturo Munive <arturomunive(at)gmail(dot)com>
To: Miguel Rodríguez Penabad <penabad(at)gmail(dot)com>
Cc: Jose Cariqueo <jcariqueo(at)fonadis(dot)cl>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Conocer el id después de insertar un registro nuevo
Date: 2007-06-26 15:38:53
Message-ID: 4681330D.4070407@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Miguel Rodríguez Penabad escribió:
> El 26/06/07, Jose Cariqueo <jcariqueo(at)fonadis(dot)cl> escribió:
>> Estimados:
>> Tengo la sigte. inquietud:
>>
>> Inserto un registro nuevo en una tabla e inmediatamente quiero
>> conocer el
>> id(pk) correspondiente a dicho registro, cosa de insertar dicho valor en
>> otra tabla.
>>
>> Qué tipo de instrucción me permite hacer esto de manera segura, sin
>> tener
>> que hacer un SELECT después del INSERT.
>
> La forma directa: usa insert ... returning.
> Por ejemplo:
> create table t(a serial primary key, b text);
>
> insert into t(b) values('valor') returning a;
> a
> ---
> 1
> (1 row)
> insert into t(b) values('valor') returning a;
> a
> ---
> 2
> (1 row)
>
> La otra opción, si usas secuencias y puedes hacer el select después de
> la inserción, sería:
>
> select currval('t_a_seq');
> currval
> ---------
> 2
> (1 row)
>
> Saludos
> Miguel
> --
> ---------------------------(fin del mensaje)---------------------------
> TIP 7: no olvides aumentar la configuración del "free space map"
>
No sabia esa de returning... siempre se aprende algo nuevo (sobre todo
yo ;) )

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Mario Gonzalez 2007-06-26 15:41:40 Re: Instalación postgres 8.1 en Debian 4
Previous Message Miguel Rodríguez Penabad 2007-06-26 15:27:42 Re: Conocer el id después de insertar un registro nuevo