Задавайте вопросы, мы ответим
Вы не зашли.
Страниц: 1
Есть две таблицы в них уникальный id он не автоинкремент, а берется мах +1 и делается под этот номер записи в двух таблицах.
Но записи удаляются периодически, в результате номера идут в выводе не подряд, а допустим после 20 идет 23.
Хочу сделать чтобы все id в выводе cтали подряд и после 20 шел уже 21 что была запись по 23му.
Да, если запись под каким либо id удалялась , то удалялась из обоих таблиц соответственно, поэтому соответствие таблиц есть.
Есть какая команда чтобы перенумеровать поле сверху вниз по возрастающей?
Я для двух таблиц выполню команду и соответствие сохранится но уже в номерах будет порядок, без пробелов.
Какие тут подводные камни?
Конечно дамп базы перед процедурой выполню.
Неактивен
Создаете новую колонку, заполняете её по возрастающей (например, с помощью пользовательских переменных или первичного ключа), синхронизируете со второй таблицей, удаляете старую колонку id, новую переименовываете в id.
Но зачем это нужно? Что плохого в том, что значения идут не подряд?
Неактивен
vasya написал:
Но зачем это нужно? Что плохого в том, что значения идут не подряд?
Из базы выводятся записи в таблице и там отображается id , хотя можно было бы в таблице выводить просто подряд номера, а не id таблицы, я только сейчас подумал об этом.
Хотя может быть и есть смысл, можно напрямую из мускула посмотреть этот id в таблицах. Хотя его и по другому могу найти.
Не подумал об этом сразу.
Наверно так даже лучше, как выше. Решение нашел такое.
Неактивен
Вся таблица будет заблокирована пока идет апдейт.
Неактивен
СПАСИБО !!!
Неактивен
yok написал:
Наверно так даже лучше, как выше. Решение нашел такое.
$sql="UPDATE `info` SET `id`=(SELECT @a:=@a + 1 FROM (SELECT @a:= 0) as tbl)";
Но решил разобраться в этом вопросе , уж если начал.
Не скажите как в таких случаях решается вопросы блокировки, на момент АПДЕЙТА таблицы?
И вы уверены, что обновление таблицы будет в порядке возрастания id?
А ещё что будет, если между командой на обновление первой и второй таблиц будет добавлена новая запись?
Неактивен
Страниц: 1