MySQL заполнить новый столбец с возрастающими значениями без auto_increment - PullRequest
4 голосов
/ 27 июля 2011

Я вижу много почти похожих вопросов с очевидными ответами, но я вполне уверен, что этот вопрос еще не здесь.

Мне нужно добавить столбец идентификатора с автоинкрементом в существующую таблицу и установить его в качестве первичного ключа. Я не могу потерять ни одну из существующих данных.

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

Как я могу снова заполнить эти значения, чтобы обеспечить уникальность моего первичного ключа?

*** Я бы предпочел избегать сброса существующих данных во временную таблицу и повторной вставки, если есть простое решение.

Текущий скрипт:

alter table the_table add new_field int first;
alter table the_table drop primary key, add primary key (new_field);
alter table the_table change new_field new_field int unsigned not null auto_increment;

Я запускаю скрипт в таком порядке, поскольку у меня не может быть столбца с автоинкрементом, который не является первичным ключом.

(MySQL 5.3)

Ответы [ 2 ]

11 голосов
/ 27 июля 2011

Попробуйте создать столбец, указав его в качестве первичного ключа и автоматического увеличения за один раз.

ALTER TABLE `the_table` ADD `new_field` INT NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST; 
0 голосов
/ 27 июля 2011

Просто добавьте поле автоинкремента, не будучи первичным ключом:

ALTER TABLE `the_table` ADD `new_field` INT NOT NULL AUTO_INCREMENT
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...