powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Реализация приоритетов.
5 сообщений из 5, страница 1 из 1
Реализация приоритетов.
    #39259348
mkr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть небольшая зависимая табличка, в которую заносятся данные.
пока сделано так - есть поле приоритета (по нему идёт сортировка), которые заполняется вручную (если не заполнено - в него дублируется Автоинкреметный суррогатный ключ). заполнение предполагается с шагом 10 (10 - 20 - 30). Если необходимо изменить порядок - вручную изменяем значение на величину 11-19 (чтобы изменить положение 3-его значения на вторую позицию изменим 30 на 15.

как бы красивее реализовать, чтобы это поле не заполнять руками и иметь возможность двигать позиции вверх-вниз?
...
Рейтинг: 0 / 0
Реализация приоритетов.
    #39259469
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mkrкак бы красивее реализовать, чтобы это поле не заполнять руками и иметь возможность
двигать позиции вверх-вниз?

Сделать его DOUBLE PRECISION. Хватит на 48 передвижений.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Реализация приоритетов.
    #39259494
Фотография Egoр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mkr,

Если вы про интерфейс спрашиваете, то drag&drop + кнопочки Up+Down рулят.
Если про реализацию в БД, то напишите процедурку, которая будет аккуратно обновлять поле с приоритетом по записям одного узла.
...
Рейтинг: 0 / 0
Реализация приоритетов.
    #39259616
mkr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Egoр,
интерфейс упустим.

т.е. ХП делает тот же инкремент/декремент на 15 и потом делает UPDATE всех полей с тем же шагом 10?
...
Рейтинг: 0 / 0
Реализация приоритетов.
    #39259633
Фотография Egoр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mkr,

Перемещение строки вверх, например:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
update table1 t
   set prioritet = case prioritet
                when :cur_row then
                 :prev_row
                else
                 :cur_row
              end
 where prioritet in (:cur_row, :prev_row)

Аналогично можно сделать вниз.
остается правильно определять :prev_row, :cur_row, :next_row
А также значение приоритета для новой строчки.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Реализация приоритетов.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]