【おーといんくりめんと】
オートインクリメント とは?
最終更新:
💡 新しい行の番号を、DBに割り当ててもらう
新しい行に使う番号をデータベース側で自動的に増やして割り当てる仕組み。欠番と、重複を防ぐ制約が別の役割であることを説明します。
📌 このページのポイント
会員IDを、自分で数えて付けるの?
いつも1、2、3と隙間なく並ぶ?
IDの最大値を見れば、会員数が分かる?
欠番や削除があるから、行数とは一致しないよ。番号を付ける目的と、件数を数える目的は別。最新の番号だけで、保存された行が何件あるかを判断しないようにしよう。
自動なら、重複の設定はいらない?
PostgreSQLのIDENTITY列は、自動生成だけで一意性を保証しないと説明されているよ。手動で値を入れたり、シーケンスをリセットしたりできるため、重複を防ぐにはPRIMARY KEYやUNIQUEの制約を使うんだ。
自動で付く番号は、秘密の合言葉?
番号は行を識別するためのものだよ。IDが分かったことと、そのデータを読んでよいことは別。利用者がアクセスできるかは、別途確認する必要があるね。
もっと詳しく知りたい人へ
他のDBでも、AUTO_INCREMENTと書く?
書き方はDBによります。PostgreSQLのIDENTITY列は暗黙のシーケンスから値を生成し、GENERATED ALWAYSとBY DEFAULTでは明示した値の扱いも違います。MySQLの書き方をそのまま移さず、対象の仕様を確認します。
番号を手動で変えても、自動生成に影響しない?
影響する場合があります。MySQLは、AUTO_INCREMENT列へ大きな値を明示して挿入した場合などの採番への影響を説明しています。欠番を埋めるために番号を振り直すことを、通常の自動採番と同じ操作だとは考えません。
まとめ:ざっくりこれだけ覚えればOK!
「オートインクリメント」って出てきたら「新しい行の番号を、DBが自動で増やして割り当てる仕組み」と思えばだいたいOK!
📖 おまけ:英語の意味
「Auto increment」 = 自動的に増やす
💬 MySQLのAUTO_INCREMENTを例に説明します。PostgreSQLではシーケンスを使うIDENTITY列などがあり、書き方や細かな規則は異なります。