Mysql - изменить столбец AUTO_INCREMENT

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

ALTER TABLE document
ALTER COLUMN document_id AUTO_INCREMENT

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

+--------------------+
| VERSION()          |
+--------------------+
| 5.0.75-0ubuntu10.2 |
+--------------------+

Ответы

Ответ 1

ALTER TABLE document MODIFY COLUMN document_id INT auto_increment

Ответ 2

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

ALTER TABLE document MODIFY document_id INT AUTO_INCREMENT PRIMARY KEY

Ответ 3

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

Ответ 4

В моем случае он работал только тогда, когда я поставил Not null. Я думаю, что это ограничение.

ALTER TABLE document MODIFY COLUMN document_id INT NOT NULL AUTO_INCREMENT;

Ответ 5

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

ALTER TABLE document
ALTER COLUMN document_id int AUTO_INCREMENT

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

Ответ 6

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 для получения дополнительной информации о указании столбцов.

Ответ 7

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

ALTER TABLE document
MODIFY COLUMN document_id int AUTO_INCREMENT

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

Ответ 8

Если ни одна из вышеперечисленных работ не попробует это. Это то, что я сделал в MYSQL, и да, вам нужно дважды написать имя столбца (document_id).

ALTER TABLE document
CHANGE COLUMN document_id document_id INT(11) NOT NULL AUTO_INCREMENT ;

Ответ 9

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

ALTER TABLE document
MODIFY COLUMN document_id int AUTO_INCREMENT;

Ответ 10

Чтобы изменить столбец в mysql, мы используем ключевые слова alter и modify. Предположим, что мы создали таблицу типа:

create table emp(
    id varchar(20),
    ename varchar(20),
    salary float
);

Теперь мы хотим изменить тип идентификатора столбца на целое число с автоматическим приращением. Вы можете сделать это с помощью команды, например:

alter table emp modify column id int(10) auto_increment;

Ответ 11

alter table tbl_user MODIFY COLUMN id int (10) auto_increment;

Ответ 12

Синтаксис предыдущей таблицы:

CREATE TABLE apim_log_request (TransactionId varchar(50) DEFAULT NULL);

Для изменения TransactionId для автоматического увеличения используйте этот запрос

ALTER TABLE apim_log_request MODIFY COLUMN TransactionId INT auto_increment;

Ответ 13

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

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

Ответ 14

Используйте следующие запросы:

ALTER TABLE YourTable DROP COLUMN IDCol

ALTER TABLE YourTable ADD IDCol INT IDENTITY(1,1)