事実の後で主キーカラムをAUTO_INCREMENT
にするためにテーブルを修正しようとしています。次のSQLを試しましたが、構文エラー通知があります。
ALTER TABLE document
ALTER COLUMN document_id AUTO_INCREMENT
私は何か悪いことをしているのでしょうか、それとも不可能なのでしょうか。
+ -------------------- + | VERSION()| + -------------------- + | 5.0.75-0ubuntu10.2 | + -------------------- +
ALTER TABLE document MODIFY COLUMN document_id INT auto_increment
Romanは正しいですが、auto_incrementカラムはPRIMARY KEYまたはUNIQUE KEYの一部である必要があります(そしてほぼ100%のケースで、PRIMARY KEYを構成する唯一のカラムであるべきです)。
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;
これを行うための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 を参照してください。
AUTO_INCREMENT
は列のデータ型の一部です。もう一度列の完全なデータ型を定義する必要があります。
ALTER TABLE document
ALTER COLUMN document_id int AUTO_INCREMENT
(int
を例にとると、列が以前に持っていた型に設定する必要があります)
auto_increment
ディレクティブの前に列の型、つまりALTER TABLE document MODIFY COLUMN document_id INT 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 document_id int AUTO_INCREMENT;
上記のどの方法でもうまくいかない場合はこれを試してください。これは私がMYSQLでしたことです、そして、あなたは二度カラム名(document_id)を書く必要があります。
ALTER TABLE document
CHANGE COLUMN document_id document_id INT(11) NOT NULL 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
(例としてintを取る、あなたはそれが列が前に持っていた型に設定する必要があります)
前のテーブルの構文:
CREATE TABLE apim_log_request (TransactionId varchar(50) DEFAULT NULL);
TransactionIdを自動インクリメントに変更するには、このクエリを使用します。
ALTER TABLE apim_log_request MODIFY COLUMN TransactionId INT auto_increment;
ちょうどこのような:
alter table document modify column id int(11) auto_increment;
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;
alter table tbl_user MODIFY COLUMN id int(10) auto_increment;
カラムを再定義しているときは、データタイプをもう一度指定し、auto_incrementをデータタイプの一部として追加する必要があります。
ALTER TABLE `document` MODIFY COLUMN `document_id` INT AUTO_INCREMENT;
ALTER TABLE table_name MODIFY COLUMN idデータ型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>