how to return the last inserted identity column value

Started by Michael Gouldabout 14 years ago3 messagesgeneral
Jump to latest
#1Michael Gould
mgould@isstrucksoftware.net

In some languges you can use set l_localid = @@identity which returns
the value of the identity column defined in the table. How can I do
this in Postgres 9.1

Michael Gould
Intermodal Software Solutions, LLC
904-226-0978

#2Scott Marlowe
scott.marlowe@gmail.com
In reply to: Michael Gould (#1)
Re: how to return the last inserted identity column value

On Thu, Mar 8, 2012 at 11:16 AM, <mgould@isstrucksoftware.net> wrote:

In some languges you can use set l_localid = @@identity which returns
the value of the identity column defined in the table.  How can I do
this in Postgres 9.1

Assuming you created a table like so:

smarlowe=# create table test (id serial,info text);
NOTICE: CREATE TABLE will create implicit sequence "test_id_seq" for
serial column "test.id"
CREATE TABLE

Then use returning:

smarlowe=# insert into test (info) values ('this is a test') returning id;
id
----
1
(1 row)

#3Ondrej Ivanič
ondrej.ivanic@gmail.com
In reply to: Scott Marlowe (#2)
Re: how to return the last inserted identity column value

Hi,

On 9 March 2012 05:20, Scott Marlowe <scott.marlowe@gmail.com> wrote:

On Thu, Mar 8, 2012 at 11:16 AM,  <mgould@isstrucksoftware.net> wrote:

In some languges you can use set l_localid = @@identity which returns
the value of the identity column defined in the table.  How can I do
this in Postgres 9.1

Assuming you created a table like so:

smarlowe=# create table test (id serial,info text);
NOTICE:  CREATE TABLE will create implicit sequence "test_id_seq" for
serial column "test.id"
CREATE TABLE

Then use returning:

smarlowe=# insert into test (info) values ('this is a test') returning id;

You can use lastval() or currval() functions:
http://www.postgresql.org/docs/9.1/static/functions-sequence.html

--
Ondrej Ivanic
(ondrej.ivanic@gmail.com)