電子書籍の厳選無料作品が豊富!

こんにちは
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になるように、どうすればいいのか、お願いできますか?

お願いします。

A 回答 (3件)

回答が重複するかもしれませんが、少なくともinnodbなら


alter table <tablename> auto_increment=<value>;
で可能です。
    • good
    • 0

 お使いのテーブルが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.)

参考URL:http://dev.mysql.com/doc/refman/5.0/en/innodb-au …
    • good
    • 0

常に連番というのは不可能ではないでしょうけど


やる意味がないので、いかがなものかと思います。
特にインクリメントってユニークなIDを発行している
だけで別に連番機能というわけでもないでしょう。
RDBですからそのIDをキーに他のテーブルとの
すり合せにつかったりするわけで、9番を消して、
あらたなわけのわからんデータが9番にきて
しまったら、整合性がなくなりますから。

また連番といってもソートは任意のフィールド
をつかうので、連番の意味がありません。
連番をつかってソートするくらいなら
更新日時をフィールドにうめむか更新順テーブル
をもってください。
    • good
    • 0
この回答へのお礼

ごめんなさい。意味がよくわかりません。

一点だけ直さないといけないのは、#9と#10のことは、フィールドのことではなく、レコードのことです。

連番は参考のためにつくったフィールドです。

あらためて質問するのならば、連番index1を作った後に、どうやってそのindex1を消去すればいいのか (もう一度新しい連番作るために)、教えてください。

日本人ではないので、回答の意味が全部理解できませんでした。ごめんなさい。ありがとうございました。お願いします。

お礼日時:2005/10/23 17:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!