自動インクリメント値を変更して、特定の番号から開始するようにしようとしています:
ALTER TABLE batchinfo AUTO_INCREMENT = 20000;
しかし、レコードをクエリすると、ステートメントは成功したように見えますが、古い番号付け (1,2...) がまだ存在します。MySQL ワークベンチを使用しています。何が問題なのですか?
自動インクリメント値を変更して、特定の番号から開始するようにしようとしています:
ALTER TABLE batchinfo AUTO_INCREMENT = 20000;
しかし、レコードをクエリすると、ステートメントは成功したように見えますが、古い番号付け (1,2...) がまだ存在します。MySQL ワークベンチを使用しています。何が問題なのですか?
変更AUTO_INCREMENT
は過去に生成された値を変更せず、次に生成される値を設定するだけです。過去の値を変更したい場合は、UPDATE
. たとえば、次のようなものです。
UPDATE batchinfo SET id = id + 19999;
この列を参照しているテーブルが他にないことに注意してください。そうしないと、それらの参照が無効になります。ON UPDATE CASCADE
(これらの参照が適切に記載されていない限り、外部キーをサポートするのは InnoDB テーブルのみです。また、意図した効果を得るには、このコマンドでこれらの外部キーをすべて定義する必要があります。)
次の AUTO_INCREMENT
値の変更を行うそのクエリ。既存の値は変更されません。
すでに値 1、2、3、... 100 があり、その後AUTO_INCREMENT
20000 に変更すると、次に入力する値は 101 ではなく 20000 になります。
クエリは、これから生成される自動インクリメント値の新しい開始値を設定します。テーブルに既に格納されている自動インクリメント値は更新されません。