Re: pseudo-serial values in dual primary key? - Mailing list pgsql-general

From Bruno Wolff III
Subject Re: pseudo-serial values in dual primary key?
Date
Msg-id 20050319172532.GA3875@wolff.to
Whole thread Raw
In response to pseudo-serial values in dual primary key?  (Benjamin Smith <lists@benjamindsmith.com>)
List pgsql-general
On Sat, Mar 19, 2005 at 01:43:07 -0800,
  Benjamin Smith <lists@benjamindsmith.com> wrote:
> Is it possible to have the equivalent of a serial data type in a table,
> sub-categorized?

[snip]

> Now, I want to create an entries table, and by default, count serially by
> category, so that category 1 has entries.sequence of 1, 2, 3, and so does
> category 2. (where sequence= 1, 2, 3...)  Something like:

[snip]

> I'm not sure about the semantics of this, but i want sequence to start at 1,
> and count up, for its category as defined by categories_id. I already know
> that I can set enforce the uniqueness of categories_id and sequence with thte
> primary key, and I could just write some more app code to do a query to get
> the max value of sequence where categories_id=$categories_id, but can this be
> done without adding a bunch of xtra application code?

Serials should be used for obtaining unique values. Within a single session
you can also depend on them to increase (unless you have set the serial
to allow for wrap around). There can be gaps. Different sessions may get
values out of order in time.

If you aren't deleting records or updating the sequence values, then the
simplest thing to is to lock the table, find the maximum value for a category
(using order by and limit instead of the max aggregate if you have an index
on category and the sequence) and use the next integer for the sequence
value.

However, it may be worth asking why you want to do this? Why not just use
one sequence over the whole table. You can still use that for ordering
within a category, and if necessary the application can renumber when
outputing data.

pgsql-general by date:

Previous
From: Greg Stark
Date:
Subject: Re: pseudo-serial values in dual primary key?
Next
From: perico@12move.nl
Date:
Subject: Question insert data