質問するログイン新規登録
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Q&A

2回答

545閲覧

phpMyAdmin の AUTO_INCREMENTで数字を詰める方法

takeshi1907

総合スコア54

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

0グッド

0クリップ

投稿2023/07/15 09:15

編集2023/07/15 09:17

0

0

実現したいこと

phpMyAdmin の AUTO_INCREMENTで数字を詰める方法が分からなく質問させていただきました。

前提

Usersテーブルの id を AUTO_INCREMENT して、実際のユーザーIDとして利用しています。

例えば id が1.2.4.5.6 (3は削除されている)のように id が割り振られて、更に6を削除し 1.2.4.5 状態で、その後にレコードを追加すると id には 7 が割り振られます。

質問としては、1.2.4.5 (3は削除されている)状態から レコードを追加すると 6 から詰めて追加するよに変更するにはどうすればいいでしょうか?

条件として、過去に削除された id 上記で言うと 3 は飛ばしたまま詰めないようにしたいです。

理由としては既に登録されているユーザーIDを変えたくない為です。

少し質問がわかりずらくなってしまいましたが、宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自動インクリメント値をリセットすることはお勧めしません。なぜなら、Usersテーブルから削除されたレコードのidが他のテーブルやシステムの他の場所でまだ使われているかもしれないからです。

つまり、削除されたユーザのidを別のユーザのidとして再使用した場合には、データの不整合や情報の漏洩などが発生する可能性があります。場合によってはそれらの異常に伴うシステムの停止もありえます。

そのようなリスクを承知の上であえて自動インクリメント値をリセットしたいのであれば、次のようなSQL文を実行することで可能だと思います。

sql

1ALTER TABLE Users AUTO_INCREMENT = 6;

自動インクリメントの値として指定できるのは、現在存在しているレコードの自動インクリメント値より大きいものだけです。ご質問の例で言えば、6以上を指定できますが3などは指定できません。

投稿2023/07/16 03:56

編集2023/07/16 05:46
ikedas

総合スコア4441

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

auto_incrementの主キーをそのままユーザーIDにするのはおすすめできません。
なんらかのルールに則って任意にIDを発行するのが妥当です。

投稿2023/07/19 03:33

yambejp

総合スコア117967

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問