Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Есть ли тип данных порядок?
|
|||
|---|---|---|---|
|
#18+
Вот есть задача хранить порядок строк. Чтобы можно было быстро и удобно менять их местами. И если создать столбец order с типом integer, то при изменении значения order в какой то строке, другие значения в столбце не пересчитываются. Например есть таблица: Код: plaintext 1. 2. 3. 4. Дальше мы меняем в строке 3 порядок на 1. И получается Код: plaintext 1. 2. 3. 4. А нужно пересчитать порядок остальных строк тоже Код: plaintext 1. 2. 3. 4. Как правильней это организовать? Можно ли это сделать без пересчёта всех остальных значений? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 11:27 |
|
||
|
Есть ли тип данных порядок?
|
|||
|---|---|---|---|
|
#18+
mankingВот есть задача хранить порядок строк. Чтобы можно было быстро и удобно менять их местами. И если создать столбец order с типом integer, то при изменении значения order в какой то строке, другие значения в столбце не пересчитываются. Например есть таблица: Код: plaintext 1. 2. 3. 4. Дальше мы меняем в строке 3 порядок на 1. И получается Код: plaintext 1. 2. 3. 4. А нужно пересчитать порядок остальных строк тоже Код: plaintext 1. 2. 3. 4. Как правильней это организовать? Можно ли это сделать без пересчёта всех остальных значений? Вариантов как всегда - несколько 1)Использовать более подходящий тип столбца сортировки Например, Код: sql 1. 2) Код: sql 1. с инкрементом по 100 к примеру, позволит достичь примерно того же, что и в первом случае. 3) Код: sql 1. тип с максимальной точностью и туда пихать при записи clock_timestamp() тоже можно,но желательно, если вставка идёт по одной записи, иначе некоторые значения будут одинаковыми. 4) Использовать ссылки на предыдущую запись и на следующую запись(2 внешних ключа). Лучше сделать необязательные (для удобства изменения сортировки). И чтобы каскадно проставлялись NULL при удалении записи обязательно. Селекты будут чутка посложнее,больше места для хранения потребуется, но и переписывать много не надо при изменении сортировок. Как то так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 11:49 |
|
||
|
Есть ли тип данных порядок?
|
|||
|---|---|---|---|
|
#18+
Я это решал апдейтом типа такого: Код: plsql 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 12:44 |
|
||
|
Есть ли тип данных порядок?
|
|||
|---|---|---|---|
|
#18+
mankingВот есть задача хранить порядок строк. Дальше мы меняем в строке 3 порядок на 1. И получается Код: plaintext 1. 2. 3. 4. А нужно пересчитать порядок остальных строк тоже Код: plaintext 1. 2. 3. 4. По какому параметру надо перестраивать строку и порядок? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 12:46 |
|
||
|
Есть ли тип данных порядок?
|
|||
|---|---|---|---|
|
#18+
Alexander A. SakЯ это решал апдейтом типа такого: Код: plsql 1. 2. 3. 4. В case нужно не обменивать, а устанавливать старое значение в новое. Остальные строки между least и greatest добавлять 1 или вычитать 1 в зависимости от отношения старое-новое значение. Но вариант с делимым шагом предпочтительнее, так как требуется только выборка двух строк, между кем вставка, и апдейт одной строки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2017, 15:58 |
|
||
|
|

start [/forum/topic.php?fid=53&fpage=69&tid=1996318]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
51ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
70ms |
get tp. blocked users: |
2ms |
| others: | 323ms |
| total: | 490ms |

| 0 / 0 |
