Re: Getting last inserted SERIAL

From: Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us>
To: mgarriss <mgarriss(at)earthlink(dot)net>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: Getting last inserted SERIAL
Date: 2003-09-01 04:04:13
Message-ID: 200309010404.h8144Dt17622@candle.pha.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general


Read the FAQ. Your currval assumption is wrong.

---------------------------------------------------------------------------

mgarriss wrote:
> Given this table:
>
> CREATE TABLE test ( id SERIAL, example TEXT );
>
> An implicit sequence is created as show in this message:
>
> NOTICE: CREATE TABLE will create implicit sequence 'test_id_seq' for
> SERIAL column 'test.id'
>
> How do I retrieve the last 'id' that was inserted? I have a process
> that does an insert and then needs the value of the id column of the row
> it just inserted so that that row can be used later in processing.
> First thought is "SELECT CURRVAL('test_id_seq');" but this assumes that
> there is only one connection inserting into this table, bad assumption.
> Next idea is the make 'id' an INT4 and set it explicitly with a value
> that I select from an explicitly created sequence. This method seems a
> bit inelegant. Any ideas?
>
> TIA
> Michael Garriss
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 9: the planner will ignore your desire to choose an index scan if your
> joining column's datatypes do not match
>

--
Bruce Momjian | http://candle.pha.pa.us
pgman(at)candle(dot)pha(dot)pa(dot)us | (610) 359-1001
+ If your life is a hard drive, | 13 Roberts Road
+ Christ can be your backup. | Newtown Square, Pennsylvania 19073

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Alex 2003-09-01 05:21:04 Re: SELECT Question
Previous Message Dennis Björklund 2003-09-01 04:02:09 Re: Getting last inserted SERIAL