Re: Last insert id

From: Richard Huxton <dev(at)archonet(dot)com>
To: mixo <mixo(at)coza(dot)net(dot)za>
Cc: pgsql-sql(at)postgresql(dot)org
Subject: Re: Last insert id
Date: 2004-06-09 07:22:37
Message-ID: 40C6BABD.6060204@archonet.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

mixo wrote:
> I have three tables which are related a serial field, table1_id, in on
> of the tables. Updating the tables is done through a transaction. My
> problem is, once I have insert a row in the first tables with
> table1_id, I need for the other two tables. How can I get this? Is it
> safe to use "select max(table1_id) from table1" after the insert?

A SERIAL column is just an ordinary integer with a default of
nextval(<sequence-name>).

All you need to do is:
INSERT INTO t1 (...) VALUES (...)
INSERT INTO t2 (...) VALUES (currval(<sequence-name-from-table1>)...)

Sequences are guaranteed to give values relevant to your current connection.

--
Richard Huxton
Archonet Ltd

In response to

Browse pgsql-sql by date

  From Date Subject
Next Message Richard Huxton 2004-06-09 08:58:40 Re: returning a recordset from PLpg/SQL
Previous Message mkl 2004-06-09 06:54:17 Re: Last insert id