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