• ベストアンサー

データの連番

重複しないように連番になるように AUTO_INCREMENTとPRIMARYが設定されているidフィールドがあるんですが、 データを削除したあと連番になりません。 例えばデータを10個作ると自動的にidフィールドに1~10まで番号がふられます。 id10のデータを削除し、新規で追加すると データのidは11になってしまいます。自動的に10に振り分けてほしいのですが可能なのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

「空いている番号のうち、最小の値を再利用したい」と言っているのでしょうか? もしそうであれば、auto_incrementだけでは行えず、利用者側がそういったクエリを投げる必要があります。 MySQLのauto_incrementは、ユニークな値を生成することは可能ですが、空きの番号を再利用したりといったことは行えません。そうしたオーバーヘッドを省略することで、素早くユニークな値を生成できるのです。 なお、auto_incrementの仕様には、InnoDB、MyISAMなどのストレージエンジンの種別で、若干、異なるところがあります。

kenken8378
質問者

お礼

ありがとうございます

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

新たに追加したデータが以前に登録したデータよりidが大きい ということに意味があります。 「連番」であるということはあまり意味がありません。 10を削除したら11になるべきです。 (削除しないで隠すほうがベターです) どうしても連番データがほしいのであれば、正規化して 別テーブルで管理してください。

kenken8378
質問者

お礼

ありがとうございます。

関連するQ&A