web-dev-qa-db-ja.com

既存の列に自動インクリメントを追加する方法は?

MySQLテーブルの既存の列にauto_incrementを追加するにはどうすればよいですか?

63
mpen

ALTER TABLEコマンド で説明したように、列をMODIFYしたいと思います。次のようなものかもしれません:

ALTER TABLE users MODIFY id INTEGER NOT NULL AUTO_INCREMENT;

上記を実行する前に、id列にプライマリインデックスがあることを確認してください。

92
Don Kirkby

AUTO_INCREMENTをテーブルに追加する方法dataで、「重複エントリを回避する」エラー:

  1. INSERT SELECTを使用して、テーブルのコピーを作成しますwith

    CREATE TABLE backupTable LIKE originalTable; 
    INSERT backupTable SELECT * FROM originalTable;
    
  2. OriginalTableからデータを削除します(重複エントリを削除するため):

    TRUNCATE TABLE originalTable;
    
  3. AUTO_INCREMENTandPRIMARY KEYを追加するには

    ALTER TABLE originalTable ADD id INT PRIMARY KEY AUTO_INCREMENT;
    
  4. データをoriginalTableにコピーします(donotには、自動的に入力されるため、新しく作成された列(id)が含まれます)

    INSERT originalTable (col1, col2, col3) 
    SELECT col1, col2,col3
    FROM backupTable;
    
  5. BackupTableを削除します:

    DROP TABLE backupTable;
    

これが役立つことを願っています!

CREATE LIKEを使用したテーブルの複製の詳細:

MySQLテーブル、インデックス、データの複製

14
Arian Acosta
Alter table table_name modify column_name datatype(length) AUTO_INCREMENT PRIMARY KEY

主キーを自動インクリメントに追加する必要があります。そうしないと、mysqlでエラーが発生します。

10
php

単にauto_increment Constraint In列またはMODIFY COLUMNを追加するだけです-

 ALTER TABLE `emp` MODIFY COLUMN `id` INT NOT NULL UNIQUE AUTO_INCREMENT FIRST;

または、最初に列を追加してから、列を次のように変更します-

1. Alter TABLE `emp` ADD COLUMN `id`;

2. ALTER TABLE `emp` CHANGE COLUMN `id` `Emp_id` INT NOT NULL UNIQUE AUTO_INCREMENT FIRST;
5
Zigri2612

これは、空ではないテーブルのAUTO_INCREMENT属性を変更する場合に役立ちました。

1。)テーブル全体を.sqlファイルとしてエクスポート
2。)エクスポート後にテーブルを削除しました
2.)CREATE_TABLEコマンドの変更が必要でした
3。)。sqlファイルからCREATE_TABLEおよびINSERT_INTOコマンドを実行しました
... etヴィオラ

3
walt

Alter table table_name modify table_name.column_name data_type AUTO_INCREMENT;

例えば:

Alter table avion modify avion.av int AUTO_INCREMENT;

0
Maria

私は次のコードでこれを行うことができました:

ALTER TABLE `table_name`
CHANGE COLUMN `colum_name` `colum_name` INT(11) NOT NULL AUTO_INCREMENT FIRST;

これは、列を自動的にインクリメントできる唯一の方法です。

INT(11)は、intの最大長が11であることを示しています。必要に応じてスキップできます。

0
Fluch