0

mysql にデータを挿入するフォームは正常に動作しますが、mysql からデータを削除し、値をデータベースに再度挿入すると、自動インクリメント値が前の行の値から開始されます。例えば:

mydatabse に ID として 1,2,3,4,5 があり、データベースから 4 と 5 の ID を削除し、PHPから次のデータの挿入を開始した場合。次に、IDは6から来ています....しかし、IDを4として取得する必要があります。誰でも提案できますか。よろしくお願いします。

4

3 に答える 3

0

自動インクリメントは、途切れのないシーケンスを保証しません (保証できません)。

これを次のように自分で実装できます"SELECT MAX(ID) + 1 FROM MYTABLE;"

ただし、注意してください: わずかではあるが顕著なパフォーマンス ヒットが発生します。

  1. 更新を同時に実行している場合、デッドロックのリスクがあります
  2. (更新を同時に実行している場合) 同じキーで 2 つの挿入が行われる危険があります。

別のテーブルで独自のカウンターを実行して、これを実装することもできます。削除時にこれを正しくデクリメントするプログラム ロジックが必要です。また、「カウンター」が競合の対象になるため、パフォーマンスが低下し、デッドロックのリスクが生じます。

于 2013-08-23T08:08:32.213 に答える
0

本番環境で値をいじってはいけませんAUTO_INCREMENT。MySQL にその値を処理してもらいます。

行数を知る必要がある場合は、使用できます

SELECT COUNT(id) FROM tbl;

とにかく、本当にその値を変更したい場合、構文は次のとおりです。

ALTER TABLE tbl AUTO_INCREMENT=101;
于 2013-08-23T08:10:11.177 に答える