Подтвердить что ты не робот

Как перенумеровать первичный индекс

У меня есть простая таблица MySQL, а первичный индекс (id) не пронумерован один за другим (1, 31, 35, 100 и т.д.). Я хочу, чтобы их пронумеровали как (1, 2, 3, 4). Скажите, пожалуйста, как это сделать. Я также хотел бы указать, что я знаю о возможных последствиях операции, но я просто хочу убрать таблицу.

4b9b3361

Ответ 1

Я согласен, что другие методы будут работать, но я просто предлагаю другую идею. Это обойдется без каких-либо требований к созданию таблицы temp::

SET @i=0;
UPDATE table_name SET column_name=(@i:[email protected]+1);

Ответ 3

Самое простое решение:

  • Переименуйте таблицу в tablename_temp
  • Создайте новую таблицу со старым именем и той же структурой
  • INSERT INTO tablename (id, field1, field2, field3) SELECT NULL, field1, field2, field3,... FROM tablename_temp;
  • DROP tablename_temp

Это уничтожит все ваши данные, если вы используете внешние ключи, и я настоятельно рекомендую вам оставить идентификаторы такими, какие они есть. База данных не является неопрятной, поскольку первичные ключи не находятся в последовательности, база данных неопрятно, если ее ссылочная целостность (значения идентификатора, указывающие на неправильную или несуществующую строку в других таблицах) нарушена.

Ответ 4

CREATE TABLE newtable 
  LIKE oldtable 
  SELECT NULL, col1, col2, col3, etc FROM oldtable;

Без включения столбца первичного ключа в select, но все остальные столбцы.

И столбец первичного ключа должен быть первым в таблице, или вам нужно установить NULL в позицию столбца первичного ключа. И столбец должен иметь настройку "NOT NULL". В противном случае он будет просто установлен как null, и этот тип бессмыслен.

Причина этого в том, что MySQL любит игнорировать вставки NULL в auto_increments и вместо этого создает для него новый номер (при условии, что значение null не является допустимым значением в этом столбце).

Ответ 5

  • Удалить столбец "id".
  • Создайте столбец с именем id с автоматическим добавлением (и не разрешите null), он будет иметь новые значения, которые вы хотите.
  • Назначьте этот новый столбец "id" как PK.

отредактирован позже благодаря комментариям.

Ответ 6

Ты этого не хочешь. Первичный ключ не является числом. Это просто бессмысленная уникальная последовательность.

Ответ 7

Вы должны определить автоинкремент на вашем первичном ключе (если это первичный ключ)

Здесь ссылка:

автоинкремент sql