@gotohell

Обновление AUTO_INCREMENT средствами php?

Всем привет! В базе данных есть таблица и она пронумерованна 1,2,3,4,5 но если я допустим удаляю "2" запись нумерация теряет порядок получается 1,3,4,5 Мне надо что бы при удалении строки список обновлялся и нумеровался по порядку!

Пока что нашел вот такой sql я не знаю как я его адаптировать под php! Всем заранее спасибо!
ALTER TABLE `table1` MODIFY `id` INT(11); 
ALTER TABLE `table1` DROP PRIMARY KEY; 
UPDATE `table1` SET `id`='0'; 
ALTER TABLE `table1` AUTO_INCREMENT=1; 
ALTER TABLE `table1` MODIFY `id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY;
  • Вопрос задан
  • 775 просмотров
Пригласить эксперта
Ответы на вопрос 3
nomostrack
@nomostrack
Вам это не надо. Запись должна быть уникальной.
Вот вас не станет, я сотру вашу цифру в БД и подвину другого на это место и всё ваше имущество перейдёт ему автоматически - машина, квартира и жена его станет и дети.
Ответ написан
kimono
@kimono
Web developer
Целостность базы данных не достигается отсутствием дыр в автоинкрементных ключах. Вам не нужно этого делать. Что будет, если у вас в таблице будет 100 000 000 записей по порядку (1 - 100 000 000) и вы вдруг захотите удалить запись номер 2? Вам придётся обновить 99 999 998 строк? Для чего вам эти накладные расходы?
Ответ написан
Комментировать
@cron
Привет, я делал как то так:
Правда тут id записи по прежнему всегда уникальный,
но есть поле number без автоинкремента, которое всегда идет последовательно
Его значение при вставке записи устанавливается вручную.
А что бы получить значение делаем такой запрос:
SELECT
	MIN(d.number + 1) AS number
FROM 
	data AS d
WHERE (
	SELECT MIN(1) FROM data AS st WHERE st.number = (d.number + 1)
) IS NULL
ORDER BY d.number ASC
LIMIT 1
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы