Thread: Get last serial (autoincrement) value
Hi, Anyone knows how to obtain last inserted serial (autoincrement) id? I am currently using "SELECT id FROM table_name ORDER BY id DESC", and then retrieve first row and desired value. May be there is more elegant way? I am using ADODB. ADODB has function which in theory allows to obtain last inserted serial (autoincrement) id, but for Postgres it return OID. This is from ADODB manual: Insert_ID( ) Returns the last autonumbering ID inserted. Returns false if function not supported. Only supported by databases that support auto-increment or object id's, such as PostgreSQL, MySQL and MSSQL currently. PostgreSQL returns the OID, which can change on a database reload. Thanks in advance for any suggestion. ********************************************* * Best Regards --- Andrei Verovski * * Personal Home Page * http://snow.prohosting.com/guru4mac * Mac, Linux, DTP, Development, IT WEB Site *********************************************
select currval('table_id_column_seq'); ----- Original Message ----- From: "Andrei Verovski (aka MacGuru)" <andreil1@mail.starlett.lv> To: <pgsql-php@postgresql.org> Sent: Monday, September 01, 2003 03:34 Subject: [PHP] Get last serial (autoincrement) value > Hi, > > Anyone knows how to obtain last inserted serial (autoincrement) id? I > am currently using "SELECT id FROM table_name ORDER BY id DESC", and > then retrieve first row and desired value. > > May be there is more elegant way? I am using ADODB. ADODB has function > which in theory allows to obtain > last inserted serial (autoincrement) id, but for Postgres it return OID. > > This is from ADODB manual: > > Insert_ID( ) > Returns the last autonumbering ID inserted. Returns false if function > not supported. > Only supported by databases that support auto-increment or object id's, > such as PostgreSQL, MySQL and MSSQL currently. PostgreSQL returns the > OID, which can change on a database reload. > > > Thanks in advance for any suggestion. > > > ********************************************* > * Best Regards --- Andrei Verovski > * > * Personal Home Page > * http://snow.prohosting.com/guru4mac > * Mac, Linux, DTP, Development, IT WEB Site > ********************************************* > > > ---------------------------(end of broadcast)--------------------------- > TIP 3: if posting/reading through Usenet, please send an appropriate > subscribe-nomail command to majordomo@postgresql.org so that your > message can get through to the mailing list cleanly
At 06:34 AM 9/1/03, aka MacGuru wrote: >Anyone knows how to obtain last inserted serial (autoincrement) id? I am >currently using "SELECT id FROM table_name ORDER BY id DESC", and then >retrieve first row and desired value. Faster then your version: SELECT id FROM table_name ORDER BY id DESC LIMIT 1 The 'elegant' solution: SELECT currval('tablename_sequence_id');
On Mon, Sep 01, 2003 at 13:34:32 +0300, Andrei Verovski <andreil1@mail.starlett.lv> wrote: > > Anyone knows how to obtain last inserted serial (autoincrement) id? I > am currently using "SELECT id FROM table_name ORDER BY id DESC", and > then retrieve first row and desired value. How you want to do this, depends on what you what to do with the number. Normally if you just inserted a record that would create a new id and you want to use that id to enter in another table, then you want to call currval.