2

これは初心者の質問かもしれませんが、sqliteデータベースをテストしたところ、行を削除すると、新しい行を挿入したときに行IDが増加し続け、たとえば削除された行の行IDを再利用しないことがわかりました。では、テーブルの行数が少ないのに、行IDが最大値に達した場合はどうなるでしょうか?

4

2 に答える 2

3

これは文書化されています:

テーブルが可能な限り最大の ROWID を持つ行を以前に保持していた場合、新しい INSERT は許可されず、新しい行を挿入しようとすると SQLITE_FULL エラーで失敗します。

キーワードを省略した場合AUTOINCREMENT、ID は引き続き自動インクリメントされますが、最後の行を削除するか、値がオーバーフローした場合に再利用できます。

最大の ROWID が可能な最大の整数 (9223372036854775807) と等しい場合、データベース エンジンは、以前に使用されていないものを見つけるまで、正の候補の ROWID をランダムに選択し始めます。

于 2013-02-08T11:38:07.303 に答える