Search Postgresql Archives

Re: self ordering list

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Bryan Wilkerson wrote:

My first question concerns self ordering lists.  Basically, a numeric
column that automatically maintains an order but allows arbitrary
reordering by the user.  For example, a media playlist or the
priority of workitems within a parent container ;)     This seems
like a common pattern.

priority |  workitem
---------+-----------
1        | task 1
2        | task 2
3        | task 3
4        | task 4
5        | task 5

Insert a new task with priority==2 and...

 update tablename set priority=priority+1 where priority >= 2

delete task with priority==2 and...

 update tablename set priority=priority-1 where priority > 2

reorder task with priority==2, set its priority=4

 update tablename set priority=priority+1 where priority >= 4
>  update tablename set priority=priority-1 where priority > 2
>   and priority < 4

etc....

I've implemented in my model code but it has some deadlock issues and
I really strongly have believed all along that this belongs in the db
anyway.  Implementing the above with triggers is a tricky problem
because the trigger would key off the priority change and the
successive updates would recusively trigger.


Why not update everything into a temp table first, then update the original with the new values from that? Or maybe a view is better suited to this.

brian

---------------------------(end of broadcast)---------------------------
TIP 3: Have you checked our extensive FAQ?

              http://www.postgresql.org/docs/faq

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux