web-dev-qa-db-ja.com

MySQLカラムをAUTO_INCREMENTに変更します

事実の後で主キーカラムをAUTO_INCREMENTにするためにテーブルを修正しようとしています。次のSQLを試しましたが、構文エラー通知があります。

ALTER TABLE document
ALTER COLUMN document_id AUTO_INCREMENT

私は何か悪いことをしているのでしょうか、それとも不可能なのでしょうか。

 + -------------------- + 
 | VERSION()| 
 + -------------------- + 
 | 5.0.75-0ubuntu10.2 | 
 + -------------------- + 
179
C. Ross
ALTER TABLE document MODIFY COLUMN document_id INT auto_increment
338
roman

Romanは正しいですが、auto_incrementカラムはPRIMARY KEYまたはUNIQUE KEYの一部である必要があります(そしてほぼ100%のケースで、PRIMARY KEYを構成する唯一のカラムであるべきです)。

ALTER TABLE document MODIFY document_id INT AUTO_INCREMENT PRIMARY KEY
68
Roland Bouman

私の場合、それは私がnot nullを入れたときだけうまくいきました。これは制約だと思います。

ALTER TABLE document MODIFY COLUMN document_id INT NOT NULL AUTO_INCREMENT;
9
Rabia Naz khan

これを行うためのSQLは次のようになります。

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

SQLが機能しない理由はいくつかあります。まず、データ型(この場合はINT)を再指定する必要があります。また、変更しようとしている列にはインデックスを付ける必要があります(主キーである必要はありませんが、通常はそれが必要です)。さらに、各テーブルに存在できるAUTO_INCREMENT列は1つだけです。したがって、次の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
Steven Oxley

AUTO_INCREMENTは列のデータ型の一部です。もう一度列の完全なデータ型を定義する必要があります。

ALTER TABLE document
ALTER COLUMN document_id int AUTO_INCREMENT

intを例にとると、列が以前に持っていた型に設定する必要があります)

5
Dan Soap

auto_incrementディレクティブの前に列の型、つまりALTER TABLE document MODIFY COLUMN document_id INT AUTO_INCREMENTを指定する必要があります。

5
Håvard S

次のクエリを使用して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;
2
Azhar Zafar

以下のステートメントは機能します。列の名前にはデータ型をもう一度指定する必要があります(列の前のデータ型を再宣言してください)。

ALTER TABLE document
MODIFY COLUMN document_id int AUTO_INCREMENT;
2
user5082888

上記のどの方法でもうまくいかない場合はこれを試してください。これは私がMYSQLでしたことです、そして、あなたは二度カラム名(document_id)を書く必要があります。

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

あなたはこれのようにそれをすることができます:

 alter table [table_name] modify column [column_name] [column_type] AUTO_INCREMENT;
2
Aditya Kumar

AUTO_INCREMENTは列のデータ型の一部です。もう一度列の完全なデータ型を定義する必要があります。

ALTER TABLE document
MODIFY COLUMN document_id int AUTO_INCREMENT

(例としてintを取る、あなたはそれが列が前に持っていた型に設定する必要があります)

2
KKK

前のテーブルの構文:

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

TransactionIdを自動インクリメントに変更するには、このクエリを使用します。

ALTER TABLE apim_log_request MODIFY COLUMN TransactionId INT auto_increment;
1
Usman Yaqoob

ちょうどこのような:

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

1
apemost

Mysqlの列を変更するには、alterキーワードとmodifyキーワードを使用します。次のようなテーブルを作成したとします。

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

今度は、自動インクリメントを使用して列IDの型を整数に変更します。これは、次のようなコマンドで実行できます。

alter table emp modify column id int(10) auto_increment;
1
user6596773
alter table tbl_user MODIFY COLUMN id int(10) auto_increment;
1
Aminur Rahman

カラムを再定義しているときは、データタイプをもう一度指定し、auto_incrementをデータタイプの一部として追加する必要があります。

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

ALTER TABLE table_name MODIFY COLUMN idデータ型auto_increment;

0
Kartik Madnani

列を主キーと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>
0