Re: GET LAST ID INSERT - Mailing list pgsql-general

From maufaini@tiscali.it (Maurizio Faini)
Subject Re: GET LAST ID INSERT
Date
Msg-id a435bdf8.0309240249.263d46c5@posting.google.com
Whole thread Raw
In response to GET LAST ID INSERT  (maufaini@tiscali.it (Maurizio Faini))
Responses Re: GET LAST ID INSERT
List pgsql-general
olly@lfix.co.uk (Oliver Elphick) wrote in message news:<1064381733.6612.13.camel@linda.lfix.co.uk>...
> On Tue, 2003-09-23 at 09:24, Maurizio Faini wrote:
> > there is a way to get last id inserted into db or i have to make a new
> > query?
>
> Typically, you will have created the table with a SERIAL column, whose
> default value is taken from a sequence:
>
> junk=# CREATE TABLE xxx (
> junk(#    id  SERIAL PRIMARY KEY,
> junk(#    yyy TEXT
> junk(# );
> NOTICE:  CREATE TABLE will create implicit sequence "xxx_id_seq" for
> SERIAL column "xxx.id"
> NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index
> "xxx_pkey" for table "xxx"
> CREATE TABLE
>
> Insert a row:
> junk=# INSERT INTO xxx VALUES (DEFAULT, 'ljhldwtuy');
> INSERT 1341077 1
>
> Now get the value just created by the sequence:
> junk=# SELECT currval('xxx_id_seq');
>  currval
> ---------
>        1
> (1 row)
>
> junk=# SELECT * FROM xxx WHERE id = 1;
>  id |    yyy
> ----+-----------
>   1 | ljhldwtuy
> (1 row)
>
>
> Another way to do it, is to use the value returned by the INSERT
> statement.  If the table has oids, the first number returned (1341077 in
> the example above) is the oid of the row just inserted.  However, this
> only works when a single row is inserted in a table with oids.
>
> junk=# SELECT * FROM xxx WHERE oid = 1341077;
>  id |    yyy
> ----+-----------
>   1 | ljhldwtuy
> (1 row)
>
> --
> Oliver Elphick                                Oliver.Elphick@lfix.co.uk
> Isle of Wight, UK                             http://www.lfix.co.uk/oliver
> GPG: 1024D/3E1D0C1C: CA12 09E0 E8D5 8870 5839  932A 614D 4C34 3E1D 0C1C
>                  ========================================
>      "And we know that all things work together for good to
>       them that love God, to them who are the called
>       according to his purpose."
>                                    Romans 8:28
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org



Thank you very much!
I tried to use CURRVAL, but it gives me this error:
IS NOT YET DEFINED IN THIS SECTION


this is what i do:
1) INSERT (id,....) VALUES (nextval('...id_seq'),.....etc...
2) SELECT currval('...id_seq');
and now there is error.
3) get rs
4) another insert query with rs current val

why this not work?
where i make a mistake?

thank you.

pgsql-general by date:

Previous
From: Josué Maldonado
Date:
Subject: Is this "order by" logic right
Next
From: Stephan Szabo
Date:
Subject: Re: Is this "order by" logic right