- 締切済み
連番の質問
こんにちは MYSQLの勉強始めたばかりなのですけど、よろしくお願いします。 このように連番を作ったのですが、 alter table xxx add renban int; alter table xxx add index index1(renban); alter table xxx modify renban int auto_increment; 順調にできたのですが、#9と#10の二つのフィールドを消去したところで、次の番号が9からではなく、 11からになってしまったのです。 そこで、index1の消去して、新しい連番を作るのに、どうすればいいのか、教えてください。 それとも、次の番号が11ではなく、9になるように、どうすればいいのか、お願いできますか? お願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- nora1962
- ベストアンサー率60% (431/717)
回答が重複するかもしれませんが、少なくともinnodbなら alter table <tablename> auto_increment=<value>; で可能です。
- bobviv
- ベストアンサー率50% (13/26)
お使いのテーブルがMyISAMタイプだという前提で書きます。(I assume that your table is 'MyISAM' type.) auto_increment値をリセットしたいということでしたら、テーブルのタイプをInnoDBに変更してMySQLを再起動してみてください。その後またテーブルタイプを'MyISAM'に戻します。(If you want to reset the current value of auto_increment, change table type to 'InnoDB' and reboot MySQL.Then change back to 'MyISAM'.) alter table xxx type=innodb [reboot mysql] alter table xxx tayp=myisam ほかには、コマンドから(Another way is to type command like this...) myisamchk -A xxx or myisamchk --set-auto-increment[=value] xxx という手もあります。私が以前試した環境ではこれはうまくいきませんでしたが。(Although this way didn't work well in my case.) インデックスの指定もされているようですが、auto_incrementの問題とは関係ないでしょう。(Your query specifies the index for a table. But I think indexing does not have nothing to do with resetting the current value of auto_increment.) メーリングリスト等も参照してください。(Also refer to mailing lists etc.)
- yambejp
- ベストアンサー率51% (3827/7415)
常に連番というのは不可能ではないでしょうけど やる意味がないので、いかがなものかと思います。 特にインクリメントってユニークなIDを発行している だけで別に連番機能というわけでもないでしょう。 RDBですからそのIDをキーに他のテーブルとの すり合せにつかったりするわけで、9番を消して、 あらたなわけのわからんデータが9番にきて しまったら、整合性がなくなりますから。 また連番といってもソートは任意のフィールド をつかうので、連番の意味がありません。 連番をつかってソートするくらいなら 更新日時をフィールドにうめむか更新順テーブル をもってください。
お礼
ごめんなさい。意味がよくわかりません。 一点だけ直さないといけないのは、#9と#10のことは、フィールドのことではなく、レコードのことです。 連番は参考のためにつくったフィールドです。 あらためて質問するのならば、連番index1を作った後に、どうやってそのindex1を消去すればいいのか (もう一度新しい連番作るために)、教えてください。 日本人ではないので、回答の意味が全部理解できませんでした。ごめんなさい。ありがとうございました。お願いします。