- 締切済み
オートインクリメントの数字について
私はアクセスを使ってデータを管理しているものです。 管理番号をオートインクリメントしてるのですが、そこで問題が発生しています。 オートインクリメントでどんどん数字が増える状態になり、データが必要なくなってしまったのでそのデータを削除しました。 次に同じテーブルに新しいデータが入ってきたので、削除した後にフィールドを追加するとオートインクリメントする管理番号が数字の1からスタートするのではなく、昔、削除したフィールド数からカウントしてしまいます。 どうかアドバイス頂けないでしょうか? お願いします。
- aeic
- お礼率10% (60/582)
- その他(データベース)
- 回答数2
- ありがとう数1
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- O_cyan
- ベストアンサー率59% (745/1260)
前の回答の補足をします。 質問を見直したところ >データが必要なくなってしまったのでそのデータを削除しました。 とありましたので補足します。データを削除した時にオートナンバーのフィールドを1度削除して同じフィールドを作り直せばOKです。 リレーションしている他のテーブルがあってもデータを削除した際に一緒に削除できていればオートナンバーのフィールドを作り直すだけで問題はありません。
- O_cyan
- ベストアンサー率59% (745/1260)
一番簡単なのはインクリメントでオートナンバーにしているテーブルのフィールドを一度削除して同じフィールドを作り直せばまた1からスタートします。 他のテーブルとそのフィールドとリレーションをしていると出来ないですけどね。 出来るけどあとでキーやインデックスの不一致が出てリレーション出来なくなるのでその辺を注意して適合性をもってやれば大丈夫です。
関連するQ&A
- auto_incrementの値の取りだし方
またまたお世話になります。 いつも秒殺質問ばかりしているnak205です。 いまPHPとMySQLでフォームから受付を行い、auto_incrementで発行した受付番号を受付完了画面に表示させるようなものを使っています。 そこで困っているのが、MySQLにデータをINSERTしたあと、どうやって正確にインクリメントされたばかりの受付番号を得ればいいかというところです。 データをINSERTしたあと、受付番号を得るSQLを発行してる間に他の受付が入ってしまえば数字がずれてしまいますよね。INSERTと同時にauto_incrementで出来た数字の値を得る関数がPHPかMySQL側にありますか? 受付番号だけ別テーブルに置いてauto_incrementではなく、PHPで管理したほうが良いんでしょうか?
- ベストアンサー
- PHP
- AUTO_INCREMENTの動作について
mysqlデータベースのAUTO INCREMENT値に関する質問です。 一時的なテーブルにデータを格納し、必要な操作が終わったらほかのテーブルに移し、一時的なテーブルの中のエントリを削除する設定なんですが、AUTO_INCREMENTは30まで登りましたが、29以下のエントリは既に削除しています。そうすると、新しいエントリを挿入すると、信じられないことに、31を識別子として挿入してくれなくて、15挿入されてしまいました! データを移すときに、その番号を識別子として使いますので大問題になっています。それはAUTO_INCREMENTの正常な動作ですか??避けることはできるのでしょうか? 詳しい方がいらっしゃいましたら、ご回答をよろしくお願いいたします。
- ベストアンサー
- PHP
- AUTO_INCREMENT
教えて頂けますか? AUTO_INCREMENT を設定して、 レコードを削除した場合、番号が抜けると思いますが 新しいレコードを追加した場合、空いている番号に挿入されますか? よろしくお願いします
- 締切済み
- MySQL
- auto_increment型
phpPgAdmin上から、テーブル定義を行っています。 テーブルの中へ、auto_increment型の項目を追加したいと 考えております。 MySQLには、auto_increment型が存在しますが、PostgreSQLの場合 には、同じような型があるのでしょうか?もし、ない場合には、 一般的にどのような対応をしているのでしょうか?(例えば、 Insertする際にPGの中でincrementしているのでしょうか?) (1)auto_increment型の追加方法 (2)auto_increment型がない場合の、対処方法 以上の点に関して、お分かりになる方がいらっしゃいましたら、 ご教示をお願いいたします。
- ベストアンサー
- PostgreSQL
- 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
- auto_incrementフィールドの書込み内容を知る方法
auto_incrementの属性を持つフィールド(以後、id)を含むテーブルへ、書込みを行った場合、idフィールドには空番号が自動で付与されて書き込まれると思いますが、書き込まれた番号を効率的に知る方法はありますでしょうか。 例:id(auto_increment)、data1(char)のテーブルに対して、 data1に『AAA』をinsertした直後に、自動で付与されたid値を知りたい。 データをinsertした直後に最老番を調べる方法では、データのinsertが多数して行われた場合に、値がずれる恐れがあります。 宜しくお願い致します。
- ベストアンサー
- MySQL
- auto_incrementを設定し直す。
Primary Keyとして、auto_incrementを利用しているのですが、レコードを削除したりすると数が飛びます。 これを設定し直す事はできないのでしょうか? できないのなら、SQL文でupdataし直す。 auto_incrementをやめて、重複しない数を入れる。 ・・・しかないんかな??
- 締切済み
- MySQL
- オートインクリメントの最新の値
いずれかの方法で、オートインクリメントで記録している数字の最新のものを取得したいです。 (PHP/MySQL) 考えているのは オートインクリメントのフィールドの中から一番大きいものを取得 という方法ですが、WHEREの条件式をどのように書けばいいかがわかりません。 また、他にいい方法があれば教えていただきたいです。
- ベストアンサー
- MySQL
- (ACCESS)今回出た数字を基準にして次回出た数字をカウントしたいのですが…
1~6までの数字が書かれた6枚のカードから3枚を同時に引いて 出たカードの数字を記録していくデータベースを作るとき、 ・今回引いた3枚が(1).(3).(6)(区別のため()囲み数字にしました) 次回引いた3枚が1.4.5の時 「(1)」が出た次回の数字、1.4.5をカウント 「(3)」が出た次回の数字、1.4.5をカウント 「(6)」が出た次回数字、1.4.5をカウント 今回出たそれぞれの数字を基準にして 次回出た数字をカウントしていくクエリを 作成するにはどうすればよいのでしょうか? ACCESSの造詣が深い方、ご助力をよろしくお願いいたします。 --------------------------------------------- 今現在あるテーブル ・結果テーブル…引いた3枚の数字を記録 テーブル 「結果テーブル」 フィールド名 「回数」「1枚目」「2枚目」「3枚目」(全て数値型) ・カード番号テーブル フィールド名 「カード番号」 レコード数=6(カード番号=1,2,・・・6)数値型
- ベストアンサー
- オフィス系ソフト
- オートナンバー型を1から始める方法はありますか?
アクセスのVBAで mySQL = "DELETE Tテーブル.* FROM Tテーブル;" DoCmd.RunSQL mySQL を実行して テーブルのデータをすべて削除してから、 データを追加するコードを実行しているのですが オートナンバー型のフィールドが前回の続きの値から始まります。 運用上問題ないのですが 途中の数字から始まってスッキリしません。 削除クエリを実行しても オートナンバー型を1から始める方法はありますか?
- ベストアンサー
- その他MS Office製品