Измените столбец MySQL, чтобы быть AUTO_INCREMENT

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

ALTER TABLE document
ALTER COLUMN document_id AUTO_INCREMENT

Я делаю что-то не так, или разве это не возможно?

+--------------------+
| VERSION()          |
+--------------------+
| 5.0.75-0ubuntu10.2 |
+--------------------+
188
задан TRiG 14 May 2018 в 06:28
поделиться

5 ответов

ALTER TABLE document MODIFY COLUMN document_id INT auto_increment
.
357
ответ дан 23 November 2019 в 05:42
поделиться

AUTO_INCREMENT является частью типа данных столбца, нужно снова определить полный тип данных для столбца:

ALTER TABLE document
ALTER COLUMN document_id int AUTO_INCREMENT

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

.
5
ответ дан 23 November 2019 в 05:42
поделиться

SQL это будет:

ALTER TABLE `document` MODIFY COLUMN `document_id` INT AUTO_INCREMENT;

Есть пара причин, которые ваш SQL может не работать. Во-первых, вы должны повторно указать тип данных ( INT в этом случае). Кроме того, столбец, которую вы пытаетесь изменить, должны быть проиндексированы (это не должно быть первичным ключом, но обычно это то, что вы хотели бы). Кроме того, может быть только один столбец auto_increment для каждой таблицы. Таким образом, вы, возможно, хотите запустить следующий SQL (если ваш столбец не проиндексирован):

ALTER TABLE `document` MODIFY `document_id` INT AUTO_INCREMENT PRIMARY KEY;

Вы можете найти больше информации в документации MySQL: http://dev.mysql.com/doc/refman/5.1 /en/Alter-table.html Для модифицирующего синтаксиса столбца и http://dev.mysql.com/doc/refman/5.1/en/create-table.html для получения дополнительной информации о Указание столбцов.

6
ответ дан 23 November 2019 в 05:42
поделиться

Перед директивой auto_increment необходимо указать тип столбца, т.е. ALTER TABLE document MODIFY COLUMN document_id INT AUTO_INCREMENT.

5
ответ дан 23 November 2019 в 05:42
поделиться

Роман прав, но обратите внимание, что колонка auto_increment должна быть частью PRIMARY KEY или UNIQUE KEY (и почти в 100% случаев она должна быть единственной колонкой, составляющей PRIMARY KEY):

ALTER TABLE document MODIFY document_id INT AUTO_INCREMENT PRIMARY KEY
70
ответ дан 23 November 2019 в 05:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: