Skip site navigation (1) Skip section navigation (2)

Re: MySQL LAST_INSERT_ID() to Postgres

From: "Scott Marlowe" <scott(dot)marlowe(at)gmail(dot)com>
To: Bill <pg(at)dbginc(dot)com>
Cc: "Steve Atkins" <steve(at)blighty(dot)com>, "pgsql-general General" <pgsql-general(at)postgresql(dot)org>
Subject: Re: MySQL LAST_INSERT_ID() to Postgres
Date: 2008-08-28 22:06:14
Message-ID: dcc563d10808281506t48260986i6339410a39b53142@mail.gmail.com (view raw or flat)
Thread:
Lists: pgsql-general
On Thu, Aug 28, 2008 at 3:38 PM, Bill <pg(at)dbginc(dot)com> wrote:
> I am new to PostgreSQL but it seems to me that lastval() will only work if
> the insert does not produce side effects that call nextval(). Consider the
> case where a row is inserted into a table that has an after insert trigger
> and the after insert trigger inserts a row into another table which has a
> serial primary key. In that case I assume that lastval() will  return the
> value from the serial column in the second table.

No, setval, currval, and lastval all require as an argument a sequence
name.  So the real issue is you have to know the sequence name to use
them.

The problem with lastval is that it reports the last value that the
sequence gave out whether it was to us or someone else.  this makes it
NOT SAFE for concurrent transactions, but more for maintenance work.

I use returning almost exclusively now.

In response to

Responses

pgsql-general by date

Next:From: Albretch MuellerDate: 2008-08-28 22:14:01
Subject: Re: ERROR: relation . . . does not exist
Previous:From: Fernando MorenoDate: 2008-08-28 21:41:14
Subject: log_statement not working on pl/pgsql functions

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group