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

Сбой при добавлении нового идентификатора (автоматического увеличения) после таблицы

У меня есть таблица с 38 000 записей, но без какого-либо столбца автоматического увеличения, например ID.
Теперь я должен добавить столбец ID, и мне интересно, могут ли быть проблемы?

4b9b3361

Ответ 1

Проблема с изменением определения в любом поле - это изменение является "разрушительным". Лучше рассматривать такие изменения как перенос данных. Я не делал этого с MySQL, но мне пришлось добавить автоматическую нумерацию в SQL Server. Основная идея такая же.

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

Ответ 2

Вы можете добавить это без проблем только , если ваша таблица не имеет отношений с другими.

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

Выполните следующие действия:

  • Сделать дамп вашей базы данных

  • Удалите первичный ключ, подобный этому

ALTER TABLE XXX DROP PRIMARY KEY
  • Добавьте новый столбец как
ALTER TABLE XXX add column Id INT NOT NULL AUTO_INCREMENT FIRST, ADD primary KEY Id(Id)

Таблица будет просмотрена и обновлен AutoInc.

Ответ 3

Это добавит идентификатор автоматического инкремента в вашу таблицу MySQL:

ALTER TABLE  `your_table_name` ADD  `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;

В зависимости от количества данных в вашей таблице это может занять несколько минут.

Ответ 4

Это решение, которое я пробовал с помощью MySQL Workbench:

ALTER TABLE `tableName` CHANGE COLUMN `id` `id` INT(11) NOT NULL AUTO_INCREMENT  ;

Я не знаю, правильно ли это, но я еще не заметил никаких проблем в своем приложении Java EE.

Ответ 5

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

set @row = 0;
UPDATE philadelphia.msg_geo_sal SET id = @row := @row + 1;

Ответ 6

"могут быть проблемы?"

Там могут быть проблемы, просто вставляя запись. Однако...

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

Чтобы быть в безопасности, я попробовал бы это на первой версии (тестовой) версии и сначала запустил приложение (-и) против тестовой версии, чтобы быть в безопасности. Хорошая практика - использовать тестовую среду, несмотря ни на что.

Можете ли вы более конкретно узнать, какие проблемы вы беспокоитесь?

Ответ 7

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

Вы можете посмотреть этот пример

ALTER TABLE `category`
ADD PRIMARY KEY (`cat_id`);
ALTER TABLE `category`
MODIFY `cat_id` int(11) NOT NULL AUTO_INCREMENT;