mysql にデータを挿入するフォームは正常に動作しますが、mysql からデータを削除し、値をデータベースに再度挿入すると、自動インクリメント値が前の行の値から開始されます。例えば:
mydatabse に ID として 1,2,3,4,5 があり、データベースから 4 と 5 の ID を削除し、PHPから次のデータの挿入を開始した場合。次に、IDは6から来ています....しかし、IDを4として取得する必要があります。誰でも提案できますか。よろしくお願いします。
自動インクリメントは、途切れのないシーケンスを保証しません (保証できません)。
これを次のように自分で実装できます"SELECT MAX(ID) + 1 FROM MYTABLE;"
ただし、注意してください: わずかではあるが顕著なパフォーマンス ヒットが発生します。
別のテーブルで独自のカウンターを実行して、これを実装することもできます。削除時にこれを正しくデクリメントするプログラム ロジックが必要です。また、「カウンター」が競合の対象になるため、パフォーマンスが低下し、デッドロックのリスクが生じます。
本番環境で値をいじってはいけませんAUTO_INCREMENT
。MySQL にその値を処理してもらいます。
行数を知る必要がある場合は、使用できます
SELECT COUNT(id) FROM tbl;
とにかく、本当にその値を変更したい場合、構文は次のとおりです。
ALTER TABLE tbl AUTO_INCREMENT=101;