Ответ 1
Я согласен, что другие методы будут работать, но я просто предлагаю другую идею. Это обойдется без каких-либо требований к созданию таблицы temp::
SET @i=0;
UPDATE table_name SET column_name=(@i:[email protected]+1);
У меня есть простая таблица MySQL, а первичный индекс (id) не пронумерован один за другим (1, 31, 35, 100 и т.д.). Я хочу, чтобы их пронумеровали как (1, 2, 3, 4). Скажите, пожалуйста, как это сделать. Я также хотел бы указать, что я знаю о возможных последствиях операции, но я просто хочу убрать таблицу.
Я согласен, что другие методы будут работать, но я просто предлагаю другую идею. Это обойдется без каких-либо требований к созданию таблицы temp::
SET @i=0;
UPDATE table_name SET column_name=(@i:[email protected]+1);
попробуйте перенумеровать метод dalmp (Уровень абстракции базы данных DALMP для MySQL с использованием PHP.)
$db->renumber('table','uid');
в основном он делает это:
SET @var_name = 0;
UPDATE Tablename SET ID = (@var_name := @var_name +1);
ALTER TABLE tablename AUTO_INCREMENT = 1
Самое простое решение:
Это уничтожит все ваши данные, если вы используете внешние ключи, и я настоятельно рекомендую вам оставить идентификаторы такими, какие они есть. База данных не является неопрятной, поскольку первичные ключи не находятся в последовательности, база данных неопрятно, если ее ссылочная целостность (значения идентификатора, указывающие на неправильную или несуществующую строку в других таблицах) нарушена.
CREATE TABLE newtable
LIKE oldtable
SELECT NULL, col1, col2, col3, etc FROM oldtable;
Без включения столбца первичного ключа в select, но все остальные столбцы.
И столбец первичного ключа должен быть первым в таблице, или вам нужно установить NULL
в позицию столбца первичного ключа. И столбец должен иметь настройку "NOT NULL". В противном случае он будет просто установлен как null, и этот тип бессмыслен.
Причина этого в том, что MySQL любит игнорировать вставки NULL в auto_increments и вместо этого создает для него новый номер (при условии, что значение null не является допустимым значением в этом столбце).
отредактирован позже благодаря комментариям.
Ты этого не хочешь. Первичный ключ не является числом. Это просто бессмысленная уникальная последовательность.
Вы должны определить автоинкремент на вашем первичном ключе (если это первичный ключ)
Здесь ссылка: