восстановить строку идентификатора в таблице MySQL с помощью скрипта Mysql или PHP - PullRequest
1 голос
/ 16 апреля 2010

У меня есть база данных с информацией о пользователях, которые используют мою веб-страницу. В таблице, как и во многих таблицах MySql, есть параметры идентификатора, которые являются автоинкрементными. Проблема в том, что когда кто-то удаляет свою учетную запись с сайта, в базе данных остается скачок в последовательности, в которой я не хочу, потому что у меня есть скрипт, который не работает, если найти какой-то скачок в ID.

Ex.

ID   Name  PASS
1    Jhon  1234
2    Max   2233
3    Jorge 2232

Если Макс выйдет и войдет новый пользователь, это то, что произойдет.

ID   Name  PASS
1    Jhon  1234
4    NewU  1133
3    Jorge 2232

Итак, каков наилучший способ стереть какое-либо тело из базы данных, чтобы избежать этого, или, если это не так, можно создать сценарий PHP или MySql, который удаляет все содержимое строки идентификатора и восстановить его в порядке? Большое спасибо! извините за мой английский

Ответы [ 3 ]

3 голосов
/ 16 апреля 2010

Я думаю, что проблема не в AUTOINCREMENT, а в вашем скрипте.

ПОЧТИ НИКОГДА вы хотите реструктурировать числа автоинкрементов в базе данных. Это побеждает цель.

Я бы рекомендовал вам поработать над исправлением сценария.

Это все виды неправильных , но с Сброс поля автоинкремента?

Поскольку поля автоинкремента обычно используется в качестве ключей, ссылающихся на другие таблицы, перенумерация существующих записи делаются не часто. если ты ДЕЙСТВИТЕЛЬНО хочу изменить их все, скопировать записи в новую таблицу, но оставить от поля автоинкремента. TRUNCATE исходную таблицу и скопируйте обратно оригинальные записи, поставляя NULL для поле автоинкремента.

Используя этот подход, вам также придется вручную обновлять все внешние ключи, ссылки на эти новые идентификаторы, , что кажется очень большим тэком по сравнению с исправлением вашего скрипта

1 голос
/ 16 апреля 2010

Не рекомендуется пытаться поддерживать последовательность первичных ключей. Гораздо лучше переписать сценарий, чтобы не иметь этой зависимости. Изменение первичных ключей в ваших данных - плохая идея как для целостности данных, так и для производительности.

0 голосов
/ 10 мая 2011

Не рекомендуется переставлять первичные ключи в таблице. Поскольку у вас есть таблица, это таблица пользователей. Это может быть связано с другими таблицами по внешнему ключу. В другой таблице может быть ссылка на первичный ключ пользовательской таблицы. Если вы переставляете первичный ключ в таблице, вам также необходимо управлять всеми связанными таблицами. Поэтому попробуйте исправить ошибки в вашем скрипте.

...