カラムに AUTO_INCREMENT をつけると、データを追加した時にカラムに対して現在格納されている最大の数値に 1 を追加した数値を自動で格納することができますが、最大の数値を削除してから、レコードを追加すると削除した最大の数値+1を格納してしまいます。
どうすれば削除した数値を無視することができますか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答5件
0
auto_incrementの連番性を利用したくて、欠番の無い状態にしたいのであれば、そういう番号を作り出すしかありません。
単に表示の際の番号であれば、create_at(作成日時)などの項目順で番号を取得すれば良いかと思います。
row_number()が使えるバージョンであれば楽ですけど、そうでない場合は以下などを参考にすれば良いかと思います。
【SQL】row_numberのないMySQLでユーザー変数を使わずに連番を振る
投稿2020/02/14 01:13
総合スコア25327
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/14 06:06 編集
2020/02/16 01:59
2020/02/16 15:30
2020/02/17 02:43
0
MySQLのAUTO_INCREMENT
は、削除しなくても番号が飛ぶことがあります。
「番号が1つも飛ばない連番であることに金銭的な価値が発生する」ような場面であればAUTO_INCREMENT
を使うこと自体が不適当ですし、そうでないなら「番号が飛ぶこともありうる」と割り切って使うしかないです。
投稿2020/02/13 22:16
編集2020/02/13 22:20総合スコア146018
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/13 22:20
2020/02/16 15:26
0
用途が明記されてないので的確なアドバイスは難しいのですけど、
そこまで気にするのでしたら自身でシーケンス管理テーブルでも作って
そこから払い出しては。
投稿2020/02/13 18:58
総合スコア80875
0
以下のSQLのauto_incrementの部分を削除した値に変更すればその削除した数値からインサートされるようになります。
そもそもauto_incrementはユニークになるようにレコード追加時にプラス1されるのでその挙動で普通です。数値を制御したかったら別のカラムに数値をもたせそのカラムを好きなように操作すればいいかと
sql
1ALTER TABLE `tablename` auto_increment = 1;
投稿2020/02/13 17:27
総合スコア876
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/16 15:23