データベースに、自動インクリメントである ID とテキストである名前の2 つの列しかないテーブルがあるとします。最初に 2 つの名前を追加してから両方の名前を削除し、次に別の名前を入力すると、ID カウントは 3 番から始まりますが、1 番から始まります。
質問は、削除された最後の ID 番号からインクリメントを継続するのではなく、ID のすべての値が削除されたら ID をリセットして 0 から開始する方法はありますか?
データベースに、自動インクリメントである ID とテキストである名前の2 つの列しかないテーブルがあるとします。最初に 2 つの名前を追加してから両方の名前を削除し、次に別の名前を入力すると、ID カウントは 3 番から始まりますが、1 番から始まります。
質問は、削除された最後の ID 番号からインクリメントを継続するのではなく、ID のすべての値が削除されたら ID をリセットして 0 から開始する方法はありますか?
AUTO_INCREMENT
値をリセットするSQLクエリは次のとおりです。
ALTER TABLE tablename AUTO_INCREMENT = 0
はい、できます
ALTER TABLE mytable AUTO_INCREMENT = 0
しかし、なぜわざわざ?宇宙にはたくさんの数字があり、32ビットでもあります!
私はこれがあなたが探していることをするだろうと思います。
ALTER TABLE table_name AUTO_INCREMENT = 1;
ALTER TABLE yourtable AUTO_INCREMENT = 1
確かにあります!
ALTER TABLE 'mytable' AUTO_INCREMENT = 0;
これにより、自動増分が0にリセットされ、そこから続行されます。
MySQL-devからの一般的な注意:
すでに使用されている値以下の値にカウンターをリセットすることはできません。MyISAMの場合、値が現在AUTO_INCREMENT列にある最大値以下の場合、値は現在の最大値に1を加えた値にリセットされます。InnoDBの場合、値が列の現在の最大値よりも小さい場合、エラーは発生せず、現在のシーケンス値は変更されません。
Truncateを使用できます。
TRUNCATE TABLE yourtable;
これは、テーブルのすべての行を削除するのと似ていますが、自動インクリメントを0にリセットするなどのいくつかの違いがあります。