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
カラムに重複がなければこれで元の状態に戻る。