後からAUTO_INCREMENTの値を1にする方法
- MySQL=4.0.26、phpMyAdmin 2.6.4-pl4を使用しています。AUTO_INCREMENT(int11)が自動追加されて、数値が70になったとしても、レコードを削除しても数値が1になりません。プライマリーキーの関係かなと思いますが、後からphpMyAdmin上でAUTO_INCREMENTの値を1にする方法、また、自由に数値を変更する方法を教えて頂けないでしょうか。
- 初期の段階でDBを構築する場合でSQLを実行する場合のAUTO_INCREMENTは解るのですが、たとえばPRIMARY KEYを(`no`)としてTYPE=MyISAM AUTO_INCREMENT=1;として、正常に利用していますが、DB構築後、レコードが登録された後、phpMyAdmin上でレコードを削除した後またAUTO_INCREMENT=1などにする方法が解りません。
- 説明べたで申し訳御座いませんが、どうぞ宜しくお願い致します。
- ベストアンサー
後からAUTO_INCREMENTの値を1にする方法
MySQL=4.0.26 phpMyAdmin 2.6.4-pl4を使用しています。 AUTO_INCREMENT(int11)が自動追加されて、数値が70になったとして レコードを削除しても数値が1になりません。 プライマリーキーの関係かなと思いますが、 後からphpMyAdmin上でAUTO_INCREMENTの値を1にする方法、また、自由に数値を変更する方法を教えて頂けないでしょうか。 初期の段階でDBを構築する場合でSQLを実行する場合の AUTO_INCREMENTは解るのですが、 たとえば PRIMARY KEYを(`no`)として TYPE=MyISAM AUTO_INCREMENT=1; として、正常に利用していますが、 DB構築後、レコードが登録された後、phpMyAdmin上で レコードを削除した後またAUTO_INCREMENT=1などにする方法が 解りません。 説明べたで申し訳御座いませんが、 どうぞ宜しくお願い致します。
- sato777
- お礼率70% (110/156)
- MySQL
- 回答数2
- ありがとう数1
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
alter table t1 pack_keys=0 checksum=0 delay_key_write=0 auto_increment=1; ※t1 AUTO_INCREMENTカラムを含む該当テーブルとする で出来るみたいです。 マニュアルによると、 >AUTO_INCREMENT カラムで生成される値は、MAX(auto_increment_column)+1) WHERE prefix=given-prefix として計算されます とのことなので、レコードが残っていると、既存データの最大値+1になるので、上記SQLの発行でも1にはなりません。
その他の回答 (1)
- yambejp
- ベストアンサー率51% (3827/7415)
運用の仕方にもよりますが、データ(レコード)を安易に削除するのは やめた方がいいかもしれませんね。 「削除されましたよーフラグ」を立てておいて、検索からはずすという のが常套でしょう。(もしくは赤黒処理をいれて0にする) それしておけば、履歴性もありますのでユーザーのミスによる想定外の トラブルにも管理者が対応しやすいと思います。 したがってオートインクリメントされたフィールドに抜け番は発生しない ということで・・・。
関連するQ&A
- AUTO_INCREMENTについて教えてください
■質問1 PHPを使ってMySQLに接続しているのですが、 「AUTO_INCREMENT」指定しているIDの次の値を取得したいのですが、 どうすれば良いでしょうか? 用途としては、レコードを挿入する際、画像ファイルにレコードID名を付与したパスをつけたいのです。 <やりたいこと> 1.AUTO_INCREMENT指定しているIDの次の値を取得 2.画像ファイル名に付与 3.レコード挿入 この1を、どうやるか知りたいです ■質問2 「AUTO_INCREMENT」指定はどこに保存されているのでしょうか? 例えばレコードを削除した後、新たにデータ挿入する場合、 次の「AUTO_INCREMENT」値ではなく、削除した一番若い番号を利用することは可能でしょうか? ■質問3 質問2に関連しているのですが、DUMPデータを移行した際など、次の「AUTO_INCREMENT」値も新しいDBへ引き継がれるのでしょうか?
- ベストアンサー
- MySQL
- MySQLのauto incrementについて
宜しくお願い致します。 MySQLでカラムにauto incrementの属性を付けたいのですが、primary_keyに指定せずにauto increment属性をつける方法はないのでしょうか?
- ベストアンサー
- MySQL
- phpMyAdminでPRIMARY KEY AUTO_INCREMENT
phpMyAdminの操作画面上でPRIMARY KEY AUTO_INCREMENTを設定する方法を教えてください。 SQLを使えばできるのですが、phpMyAdmin上ではAUTO_INCREMENTという項目が見当たりません。 かんたんな内容ですが、よろしくお願いします。
- ベストアンサー
- MySQL
- auto_incrementを設定し直す。
Primary Keyとして、auto_incrementを利用しているのですが、レコードを削除したりすると数が飛びます。 これを設定し直す事はできないのでしょうか? できないのなら、SQL文でupdataし直す。 auto_incrementをやめて、重複しない数を入れる。 ・・・しかないんかな??
- 締切済み
- MySQL
- Auto_incrementについて
Auto_incrementを設定して値をinsertしていくと1、2、3とインクリメントされると思います。 ここで、2のレコードを削除して、その後、値をinsertすると4のレコードに値が入力されると思います。 これを4ではなく2のレコードへinsertするにはコードで指定するしかないのでしょうか。 ご存知の方、宜しくお願いします。
- ベストアンサー
- MySQL
- DBでAUTO_INCREMENTのフィールドの最新の数値を知るには
PHP+MySQLで開発しています。 自らがDBテーブルに書き込んだレコードの、AUTO_INCREMENT指定してある項目に設定された数値を取得したいのですが、どのようにすればいいのでしょうか。 DB指定 CREATE TABLE test( no INT NOT NULL AUTO_INCREMENT, comment TEXT, PRIMARY KEY(no) ); PHP書き込み $sql = "INSERT INTO test(comment)VALUES('いろは')"; $results = mysql_query($sql,$dbid); このとき、テーブルtestのフィールドnoに設定された数値を知るために、 今はわざわざSQL select MAX(no) from test を発行しています。 これですと、確実性に欠けますし、冗長な気がします。 他に何か効率的な方法があるような気がしますので、 質問いたしました。 よろしくお願い申し上げます。
- ベストアンサー
- PHP
- オートインクリメントの最新の値
いずれかの方法で、オートインクリメントで記録している数字の最新のものを取得したいです。 (PHP/MySQL) 考えているのは オートインクリメントのフィールドの中から一番大きいものを取得 という方法ですが、WHEREの条件式をどのように書けばいいかがわかりません。 また、他にいい方法があれば教えていただきたいです。
- ベストアンサー
- MySQL
- オートインクリメントの削除方法について
mysqlとphpでデータベースを作成しているのですが、オートインクリメントを用いたデータベースのデータを削除する方法がわかりません。 いい方法やいいサイトがありましたら教えてください。
- 締切済み
- MySQL
- AUTO_INCREMENT
教えて頂けますか? AUTO_INCREMENT を設定して、 レコードを削除した場合、番号が抜けると思いますが 新しいレコードを追加した場合、空いている番号に挿入されますか? よろしくお願いします
- 締切済み
- MySQL
- auto_increment型
phpPgAdmin上から、テーブル定義を行っています。 テーブルの中へ、auto_increment型の項目を追加したいと 考えております。 MySQLには、auto_increment型が存在しますが、PostgreSQLの場合 には、同じような型があるのでしょうか?もし、ない場合には、 一般的にどのような対応をしているのでしょうか?(例えば、 Insertする際にPGの中でincrementしているのでしょうか?) (1)auto_increment型の追加方法 (2)auto_increment型がない場合の、対処方法 以上の点に関して、お分かりになる方がいらっしゃいましたら、 ご教示をお願いいたします。
- ベストアンサー
- PostgreSQL
お礼
正常に変更できました。 大変助かり、感謝しております。 有難う御座いました。