|
|
|
Организация очереди. FireBird.
|
|||
|---|---|---|---|
|
#18+
Дано: - набор записей (ну, например, записи о заказах - табличка ORDERS), в записи есть поле - Priority - приоритет. Integer. Nullable. Требуется: - при изменении значения Priority последовательность значений должна изменятьс так, чтобы получалась цепочка из значений от 1 до N. То же самое - при удалении, об NULL -ении и при вводе значений <=0 или > Count(*) where Priority is not nill Например, был набор записей: Код: plaintext 1. 2. 3. 4. 5. 6. Меняем значение Priority 3-й записи с Null на 2. Должно получиться: Код: plaintext 1. 2. 3. 4. 5. 6. Как бы лучше реализовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2004, 16:38:02 |
|
||
|
Организация очереди. FireBird.
|
|||
|---|---|---|---|
|
#18+
Перед изменением Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2004, 16:44:30 |
|
||
|
Организация очереди. FireBird.
|
|||
|---|---|---|---|
|
#18+
JohnmenПеред изменением Код: plaintext 1. А если изменяемое значение, а не вставляемое? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2004, 16:48:20 |
|
||
|
Организация очереди. FireBird.
|
|||
|---|---|---|---|
|
#18+
решение "в лоб" - использовать генератор, установить генератор в Priority сделать апдейт поля Priority для записей, у которых Priority>вставляемого ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2004, 17:05:15 |
|
||
|
Организация очереди. FireBird.
|
|||
|---|---|---|---|
|
#18+
visрешение "в лоб" - использовать генератор, установить генератор в Priority сделать апдейт поля Priority для записей, у которых Priority>вставляемого эээ...уууу... в спешке "прогнал" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2004, 17:06:17 |
|
||
|
Организация очереди. FireBird.
|
|||
|---|---|---|---|
|
#18+
visрешение "в лоб" - использовать генератор, установить генератор в Priority сделать апдейт поля Priority для записей, у которых Priority>вставляемого А когда коннектов/юзеров много? И когда не вставка - а изменение (т.е. перемещение, по сути)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2004, 17:06:56 |
|
||
|
Организация очереди. FireBird.
|
|||
|---|---|---|---|
|
#18+
visрешение "в лоб" - использовать генератор, установить генератор в Priority сделать апдейт поля Priority для записей, у которых Priority>вставляемого что-то типа: Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2004, 17:11:29 |
|
||
|
Организация очереди. FireBird.
|
|||
|---|---|---|---|
|
#18+
mv JohnmenПеред изменением Код: plaintext 1. А если изменяемое значение, а не вставляемое? тогда, наверное будет Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2004, 17:15:10 |
|
||
|
Организация очереди. FireBird.
|
|||
|---|---|---|---|
|
#18+
1. Генератор опасно. Юзеров много, данных много, выборки на самом деле сложные (и не очень быстрые), а эта собака генератор работает вне контекста транзакций. 2. А что по поводу не встаки, и перемещенияв очереди/изменения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2004, 17:16:07 |
|
||
|
Организация очереди. FireBird.
|
|||
|---|---|---|---|
|
#18+
А если что-то типа такого сделать. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. В приведенном тексте наверняка куча глюков. Но направление есть, если надо сам добъешь :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2004, 18:39:51 |
|
||
|
Организация очереди. FireBird.
|
|||
|---|---|---|---|
|
#18+
Не думаю, что с рекурсией нужно. Думаю, у тебя - примерно то, что нужно. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2004, 14:04:45 |
|
||
|
Организация очереди. FireBird.
|
|||
|---|---|---|---|
|
#18+
>mv >А если изменяемое значение, а не вставляемое? >Id Priority Name 1 1 Первый 2 3 Второй 3 2 Третий 4 4 Четвертый Т.е. м.б. ситуация, когда Priority=2 меняем на Priority=7 или 1 ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2004, 14:54:31 |
|
||
|
Организация очереди. FireBird.
|
|||
|---|---|---|---|
|
#18+
Да, может. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2004, 16:54:31 |
|
||
|
Организация очереди. FireBird.
|
|||
|---|---|---|---|
|
#18+
Тогда нужна полная логика поведения. (Т.е. что произойдет с 7, если есть, что - с 2 и т.д.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2004, 17:06:30 |
|
||
|
Организация очереди. FireBird.
|
|||
|---|---|---|---|
|
#18+
Если 2-й станет 7-м, то все, кто были ранее 3-м...7-м, станут 2-м ... 6-м соотвентственно, а все остальные не изменятся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2004, 17:08:45 |
|
||
|
Организация очереди. FireBird.
|
|||
|---|---|---|---|
|
#18+
Ну, и, естественно, 2-й все-таки станет 7-м. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2004, 17:09:45 |
|
||
|
Организация очереди. FireBird.
|
|||
|---|---|---|---|
|
#18+
>mv Понятно. Имеем циклический сдвиг вперед или назад в заданном отрезке. Вобщем "вперед": N+(i+1-N) mod (M-N+1) здесь M меняем на N, "назад": N+(i+M-N-N) mod (M-N+1) здесь N меняем на M, везде M>=N. Всё это можно реализовать одним запросом, если разрешить использовать CASE. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2004, 10:50:51 |
|
||
|
Организация очереди. FireBird.
|
|||
|---|---|---|---|
|
#18+
Одним запросом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2004, 12:12:50 |
|
||
|
Организация очереди. FireBird.
|
|||
|---|---|---|---|
|
#18+
Ну да. Апдейт. А что такого ? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2004, 13:38:31 |
|
||
|
Организация очереди. FireBird.
|
|||
|---|---|---|---|
|
#18+
Ну, уж не знаю, как еще намекнуть, что не понимаю, как это сделать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2004, 13:39:26 |
|
||
|
Организация очереди. FireBird.
|
|||
|---|---|---|---|
|
#18+
>mv Заставляешь напрягаться старого больного человека ? :) Примерно так. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Где PriorityOld заменяемое значение Priority на PriorityNew. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2004, 14:32:45 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=32633437&tid=1578152]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
152ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
74ms |
get tp. blocked users: |
2ms |
| others: | 210ms |
| total: | 489ms |

| 0 / 0 |
