No.279


【MySQL】AUTO_INCREMENT属性のカラムのPrimaryKeyを外す

オートインクリメントが付いたカラムをPK対象から外す。

 AUTO_INCREMENT属性が付いたカラムにはたいていプライマリーキーが設定されている。

 そのカラムに対してALTER TABLEするためにプライマリーキーを外そうと

ALTER TABLE xxx DROP PRIMARY

 とすると

Incorrect table definition; there can be only one auto column and it must be defined as a key

 という感じで怒られてしまう。

 そのため、面倒だけど以下の手順を踏む必要がある。

①AUTO_INCREMENT 属性を削除するALTER TABLEを実行。(カラム定義からAUTO_INCREMENTを除く)

ALTER TABLE samples MODIFY id int(11) NOT NULL

②PROIMARY KEY 属性を削除するALTER TABLEを実行。

ALTER TABLE samples DROP PRIMARY KEY

 これでプライマリーキーが外せた。
 この状態になればカラムに対して自由自在に変更を加えることができるようになる。

 カラムに対して何らかの処理や修正を行い、またAUTO_INCREMENTやプライマリーキーをつけたい場合は、次の手順を実行する。

③AUTO_INCREMENT 属性が追加されたALTER TABLEを実行。(カラム定義にAUTO_INCREMENTを含める)

ALTER TABLE samples MODIFY id int(11) AUTO_INCREMENT NOT NULL PRIMARY KEY

 カラムに重複がなければこれで元の状態に戻る。