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

Re: MySQL LAST_INSERT_ID() to Postgres

From: Bill <pg(at)dbginc(dot)com>
To: Scott Marlowe <scott(dot)marlowe(at)gmail(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:29:51
Message-ID: 48B726DF.7060305@dbginc.com (view raw or flat)
Thread:
Lists: pgsql-general
Scott Marlowe wrote:
> 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.
>
>   
The PostgresSQL 8.3 help file clearly shows that lastval() does not take 
a sequence as a parameter and the description i is "Return the value 
most recently returned by |nextval| in the current session. This 
function is identical to |currval|, except that instead of taking the 
sequence name as an argument it fetches the value of the last sequence 
that |nextval| was used on in the current session. It is an error to 
call |lastval| if |nextval| has not yet been called in the current 
session." Is the help incorrect?

Bill

In response to

Responses

pgsql-general by date

Next:From: ChristopheDate: 2008-08-28 22:32:32
Subject: Re: indexes on functions and create or replace function
Previous:From: ChristopheDate: 2008-08-28 22:29:25
Subject: Re: MySQL LAST_INSERT_ID() to Postgres

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