Thread: returning inserted id

returning inserted id

From
"Matt A."
Date:
this may have been asked a thousand times but i
haven't found a standard answer...


MSSQL
set nocount on
insert into (column) values (value)
select identityid = @@identity
set nocount off


POSTGRESQL
*cricket cricket* :)


How is this done? By a trigger function? Or is it
natively supported? Could I get an example on how to
do it too? 

Thanks,
Matt

    
____________________________________________________
Start your day with Yahoo! - make it your home page 
http://www.yahoo.com/r/hs 


Re: returning inserted id

From
Bruno Wolff III
Date:
On Sun, Aug 21, 2005 at 12:56:27 -0700, "Matt A." <survivedsushi@yahoo.com> wrote:
> this may have been asked a thousand times but i
> haven't found a standard answer...
> 
> 
> MSSQL
> set nocount on
> insert into (column) values (value)
> select identityid = @@identity
> set nocount off
> 
> 
> POSTGRESQL
> *cricket cricket* :)
> 
> 
> How is this done? By a trigger function? Or is it
> natively supported? Could I get an example on how to
> do it too? 

Use a serial type for the column and use currval to get the last value
assign to the corresponding sequence in the current session.
You probably want to read the documentation section on sequences.
http://candle.pha.pa.us/main/writings/pgsql/sgml/functions-sequence.html
http://candle.pha.pa.us/main/writings/pgsql/sgml/datatype.html#DATATYPE-INT


Re: returning inserted id

From
Havasvölgyi Ottó
Date:
Matt,

This is how you can do it:

create function person_ins(_name text)
returns integer
language plpgsql
as $$

declareinsert_id integer;
begininsert into person (name) values(_name);select into insert_id currval('person_id_seq');return insert_id;
end;
$$;

Or perhaps even better: you return the whole inserted row (in 8.1 with INOUT 
parameters):

create function person_ins(_name text)
returns person
language plpgsql
as $$

declareinserted_row person;
begininsert into person (name) values(_name);select into inserted_row * from person where
id=currval('person_id_seq');returninserted_row;
 
end;
$$;

Hope there is no syntax error.

Best Regards,
Otto


----- Original Message ----- 
From: "Matt A." <survivedsushi@yahoo.com>
To: <pgsql-sql@postgresql.org>
Sent: Sunday, August 21, 2005 9:56 PM
Subject: [SQL] returning inserted id


> this may have been asked a thousand times but i
> haven't found a standard answer...
>
>
> MSSQL
> set nocount on
> insert into (column) values (value)
> select identityid = @@identity
> set nocount off
>
>
> POSTGRESQL
> *cricket cricket* :)
>
>
> How is this done? By a trigger function? Or is it
> natively supported? Could I get an example on how to
> do it too?
>
> Thanks,
> Matt
>
>
>
> ____________________________________________________
> Start your day with Yahoo! - make it your home page
> http://www.yahoo.com/r/hs
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 3: Have you checked our extensive FAQ?
>
>               http://www.postgresql.org/docs/faq
>
>