Есть такая ситуация. БД MySql - таблица - в таблице поле ID с параметром
autoincrement.
И все бы ничего, но после удаления записи из таблицы, например последней, ID
которой допустим было 4, следующая запись добавляется под ID 5. Хотя ID 4
уже нет.
Как сделать так, чтобы проверялись и ID записей, которые были удалены, и на
их место добавлялась новая запись?
З.Ы. мне кажется что твою проблему можно как-то по другому решить,
нежели "оптимизация" айдишек.
--
Ivan Omelchenko
[OKAY-UANIC][OKAY-RIPE]
> а причём тут PHP?
> 1) можешь при insert укаывать явно primary id, если пропускаешь или
> указываешь 0 - тогда он сам вычисляется.
> 2) можно также указать ALTER TABLE `<table_name>` AUTO_INCREMENT = <id>,
> но это если после этого <id> действительно ничего нет.
>
> З.Ы. мне кажется что твою проблему можно как-то по другому решить,
> нежели "оптимизация" айдишек.
>
Ок. Спасибо.
Я просто думал, может есть какой вариант простой-простой.
D> Есть такая ситуация. БД MySql - таблица - в таблице
D> поле ID с параметром autoincrement.
D> И все бы ничего, но после удаления записи из таблицы,
D> например последней, ID которой допустим было 4,
D> следующая запись добавляется под ID 5. Хотя ID 4 уже
D> нет.
Это не баг, это фича... :) Вообразите себе таблицу с данными
о студентах. Эта таблица связана с другой таблицей, где
хранятся данные о курсах и оценках. Студент номер 4 только
что получил диплом, так что его надо удалить (или перенести
в таблицу выпускников -- не суть важно). Пришел новый студент,
на него надо завести запись. Если эта запись заведется под
номером 4, у нового студента тут же появится основание
требовать выдачи диплома -- по данным института, он прослушал
все необходимые курсы и получил проходные оценки.
D> Как сделать так, чтобы проверялись и ID записей,
D> которые были удалены, и на их место добавлялась
D> новая запись?
А зачем? Если Вы объявите Ваше поле ID как BIGINT UNSIGNED,
его максимальное значение будет 18446744073709551615. Вам
этого мало?
С уважением, Hиколай Чувахин
> Это не баг, это фича... :) Вообразите себе таблицу с данными
> о студентах. Эта таблица связана с другой таблицей, где
> хранятся данные о курсах и оценках. Студент номер 4 только
> что получил диплом, так что его надо удалить (или перенести
> в таблицу выпускников -- не суть важно). Пришел новый студент,
> на него надо завести запись. Если эта запись заведется под
> номером 4, у нового студента тут же появится основание
> требовать выдачи диплома -- по данным института, он прослушал
> все необходимые курсы и получил проходные оценки.
>
Спасибо. Понял.
> Это не баг, это фича... :) Вообразите себе таблицу с данными
> о студентах. Эта таблица связана с другой таблицей, где
> хранятся данные о курсах и оценках. Студент номер 4 только
> что получил диплом, так что его надо удалить (или перенести
> в таблицу выпускников -- не суть важно). Пришел новый студент,
> на него надо завести запись. Если эта запись заведется под
> номером 4, у нового студента тут же появится основание
> требовать выдачи диплома -- по данным института, он прослушал
> все необходимые курсы и получил проходные оценки.
>
Спасибо. Понял.