On Sat, Mar 19, 2005 at 01:43:07 -0800, Benjamin Smith <[EMAIL PROTECTED]> 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. ---------------------------(end of broadcast)--------------------------- TIP 6: Have you searched our list archives? http://archives.postgresql.org