DB(とりあえずMySQL)でテーブルのIDを生成するのに AUTO_INCREMENT 属性を使用します
この AUTO_INCREMENT について
AUTO_INCREMENT 属性をリセット
ALTER TABLE 文でできます
ALTER TABLE dtb_customer AUTO_INCREMENT = 1;
1 にリセットすることはあまりないと思いますが、会員IDや商品IDなど1桁は
ちょっとというときに 10001 にしたりすることが多いかな?
ちなみに AUTO_INCREMENT の値ですが information_schema.TABLES 格納されています。
欠番を取得するにはどうする?
テーブル自体を長いこと運用していると頻出の問題だと思います
MySQL以外でもできるかわかりませんが、以下の方法で欠番が取得できます
SELECT MIN(t1.product_id) + 1 AS product_id FROM dtb_products AS t1 LEFT JOIN dtb_products AS t2 ON t1.product_id + 1 = t2.product_id WHERE t2.product_id IS NULL ;
最大値まで達したらどうなる?
そもそも最大値まで達することがほぼ無いので、あまり考えたことがなかったのですが
キーカラムの型次第ってことのようです。
| 型 | バイト | 最小値 | 最大値 |
| TINYINT | 1 | -128 | 127 |
| SMALLINT | 2 | -32768 | 32767 |
| MEDIUMINT | 3 | -8388608 | 8388607 |
| INT | 4 | -2147483648 | 2147483647 |
| BIGINT | 8 | -9223372036854775808 | 9223372036854775807 |
まさか TINYINT ってことはないので、通常 INT が多いとすれば約21億 UNSIGNED で符号ビット
をはずせば約42億 十分といえば十分?
仮にアクセスログなんかの大量データを扱ったりするなら BIGINT のほうがいいかもしれませんね