Задать вопрос
@fukenrice2_0

Как производить переиндексацию в таблице SQLite?

В таблице имеется столбец id, который является первичным ключом. Можно ли при удалении случайной записи из таблицы их переиндексировать так, чтобы индексы продолжали идти подряд и не было пробелов вроде id=1,id=2,<эту запись удалили>, id=4(тут у всех записей после удаленной сдвинуть индексы на 1 назад). Заранее благодарю за ответы
  • Вопрос задан
  • 504 просмотра
Подписаться 1 Простой 1 комментарий
Ответ пользователя rPman К ответам на вопрос (3)
@rPman
В ответах все правильно сказали, но не дали собственно решения, вот оно:
заведи поле num, в котором будет размещаться порядковый номер записи, при запросе записей делай group by num

при каких то модификациях порядка (удаление или например вставка в середину порядка записи) делай номер с половинкой (например вставить запись между 3 и 4, то num пусть будет 3.5) и обновляй порядок
update table set
num = ROW_NUMBER () OVER ( ORDER BY num ) RowNum
...


кстати вместо половинчатых номеров можно сначала сдвинуть все номера больше нужного (например вставить 3-им, добавляешь условие where num>3 а потом вставлять.
Ответ написан
Комментировать