ホームページ > データベース > mysql チュートリアル > SQLite で自動インクリメントされる主キーをリセットするにはどうすればよいですか?

SQLite で自動インクリメントされる主キーをリセットするにはどうすればよいですか?

Linda Hamilton
リリース: 2025-01-15 14:21:48
オリジナル
912 人が閲覧しました

How to Reset Auto-Incrementing Primary Keys in SQLite?

SQLite 自動インクリメント主キー リセット メソッド

自動インクリメントされる主キー値のリセットは、SQLite データベースを使用する場合によくある問題です。この記事ではこれを調査し、効果的な解決策を提供します。

シナリオと質問

ユーザーが SQLite データベース内の複数のテーブルの自動インクリメント フィールドをリセットしようとしました。ただし、DELETE FROM コマンドを使用してすべてのデータを削除しても、フィールドは 0 にリセットされません。対照的に、自動インクリメントは、データが削除された後も最後の値からインクリメントを続けます。

詳しい説明

この問題は、SQLite が SQLITE_SEQUENCE という名前の別のテーブルを使用して各テーブルの最大の ROWID 値を追跡するために発生します。新しいレコードが挿入されると、AUTOINCREMENT アルゴリズムが SQLITE_SEQUENCE テーブルをチェックして、次に使用可能な主キー値を決定します。

メインテーブルからデータを削除すると、関連する行のみが削除されます。 SQLITE_SEQUENCE テーブルは変更されないため、自動インクリメント カウンタは最後の値から増加し続けます。

解決策

主キー フィールドを希望の値にリセットするには、次の 2 つのステートメントを実行します。

<code class="language-sql">DELETE FROM your_table;
DELETE FROM sqlite_sequence WHERE name='your_table';</code>
ログイン後にコピー

最初のステートメントは、メインテーブル内のすべてのデータを削除します。 2 番目のステートメントは、SQLITE_SEQUENCE テーブル内のそのテーブルのエントリを削除し、実質的に最高の ROWID 値を 0 にリセットします。

その他の注意事項

  • SQLITE_SEQUENCE テーブルの変更は注意して行う必要があります。
  • 変更を加える前に必ずデータベースをバックアップしてください。
  • このソリューションは、手動で作成されたテーブルと SQLite Maestro などのツールを使用して作成されたテーブルの両方に機能します。

以上がSQLite で自動インクリメントされる主キーをリセットするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート