self ordering list

Поиск
Список
Период
Сортировка
От Bryan Wilkerson
Тема self ordering list
Дата
Msg-id 7A1142AE1A26C045BD65DAFF79163FC3445401@MAIL093.mail.lan
обсуждение исходный текст
Ответы Re: self ordering list  (brian <brian@zijn-digital.com>)
Re: self ordering list  (Michael Glaesemann <grzm@seespotcode.net>)
Список pgsql-general

Hello to all.  I'm new to the list and have only been engineering on postgresql for about a year.  I have solved some neat problems in that time and will gladly give  back to the community.  I'll try to contribute as much as startup time permits.

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. 

Instead of trying to update all the rows affected you could instead just update the successive row and let a trigger chain reaction take care of updating all the rows.  I've implemented this it also has issues that I'm not sure are entirely mine. 

I'll break out and upload a sample case of the issues but before I do can any point me to any publication on implementing this basic pattern with postgres and plpgsql.  

Thanks,

-bryan

В списке pgsql-general по дате отправления:

Предыдущее
От: "Webb Sprague"
Дата:
Сообщение: FK creation -- "ON DELETE NO ACTION" seems to be a no-op
Следующее
От: Alvaro Herrera
Дата:
Сообщение: Re: FK creation -- "ON DELETE NO ACTION" seems to be a no-op