Измените столбец MySQL, чтобы быть автоматическим приращением


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

ALTER TABLE document
ALTER COLUMN document_id AUTO_INCREMENT

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

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

18 ответов:

ALTER TABLE document MODIFY COLUMN document_id INT auto_increment

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

ALTER TABLE document MODIFY document_id INT AUTO_INCREMENT PRIMARY KEY

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

ALTER TABLE document MODIFY COLUMN document_id INT NOT NULL AUTO_INCREMENT;

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

ALTER TABLE document
ALTER COLUMN document_id int AUTO_INCREMENT

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

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

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

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

ALTER TABLE document
MODIFY COLUMN document_id int AUTO_INCREMENT

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

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

ALTER TABLE document
MODIFY COLUMN document_id int AUTO_INCREMENT;

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

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

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

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

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

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

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

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

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

ALTER TABLE apim_log_request MODIFY COLUMN TransactionId INT auto_increment;
alter table tbl_user MODIFY COLUMN id int(10) auto_increment;

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

ALTER TABLE document MODIFY COLUMN document_id INT auto_increment

предпочтительно также сделать первичный ключ document_id

ALTER TABLE document MODIFY COLUMN document_id INT auto_increment PRIMARY KEY;

вот так:

alter table document modify column id int(11) auto_increment;

вы можете сделать это так:

 alter table [table_name] modify column [column_name] [column_type] AUTO_INCREMENT;

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

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

установка столбца в качестве первичного ключа и auto_increment одновременно:

  mysql> ALTER TABLE persons MODIFY COLUMN personID INT auto_increment PRIMARY KEY;
    Query OK, 10 rows affected (0.77 sec)
    Records: 10  Duplicates: 0  Warnings: 0

    mysql>

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

ALTER TABLE YourTable DROP COLUMN IDCol

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