Re: Last inserted row id with complex PK

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Francisco Olarte <folarte(at)peoplecall(dot)com>
Cc: Nelson Green <nelsongreen84(at)gmail(dot)com>, pgsql <pgsql-general(at)postgresql(dot)org>
Subject: Re: Last inserted row id with complex PK
Date: 2014-01-08 16:22:40
Message-ID: 7126.1389198160@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Francisco Olarte <folarte(at)peoplecall(dot)com> writes:
> Hi Nelson:
> On Wed, Jan 8, 2014 at 4:54 PM, Nelson Green <nelsongreen84(at)gmail(dot)com> wrote:
>> I have a projects log table with a three column PK, project_num, person_num,
>> and sequence, where each new entry for a project/person combination
>> increments the sequence, which is not an auto incrementing sequence. Is
>> there any way to retrieve the last entry to the table? For instance, if the
>> last entry for person 427 on project 15 was sequence number 125, is that
>> information available to me anywhere?

> SELECT MAX(sequence) FROM project_log_table WHERE person_num=427 AND
> project_num=15

Note that this will not work terribly well if there are concurrent
insertions for the same person/project. If that's not an issue, though,
it should be fine. It may be OK even if there are sometimes concurrent
insertions, if you are prepared to retry duplicate-key failures.

> If it's a PK it should have an index and I believe it will be quite fast.

It will be fast as long as sequence is the low-order column in the index.

regards, tom lane

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Keith Fiske 2014-01-08 16:58:43 Re: Planning error in dynamic string creation in plpgsql
Previous Message Francisco Olarte 2014-01-08 16:09:22 Re: Last inserted row id with complex PK