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 ;) )