Sqlite のアプリ内データベース移行のベストプラクティス 質問する

Sqlite のアプリ内データベース移行のベストプラクティス 質問する

私は iPhone に sqlite を使用していますが、データベース スキーマは時間の経過とともに変更される可能性があります。毎回移行を成功させるために注意すべき点、命名規則、注意事項は何ですか?

たとえば、データベース名にバージョンを追加することを考えました (例: Database_v1)。

ベストアンサー1

私は、定期的に sqlite データベースを更新し、古いデータベースを新しいスキーマに移行する必要のあるアプリケーションを管理しており、次のようなことを行っています。

データベースのバージョンを追跡するために、sqlite が提供する組み込みのユーザー バージョン変数を使用します (sqlite はこの変数に対して何も行いません。自由に使用できます)。この変数は 0 から始まり、次の sqlite ステートメントを使用してこの変数を取得/設定できます。

> PRAGMA user_version;  
> PRAGMA user_version = 1;

アプリが起動したら、現在のユーザー バージョンを確認し、スキーマを最新の状態にするために必要な変更を適用してから、ユーザー バージョンを更新します。更新をトランザクションでラップして、何か問題が発生した場合に変更がコミットされないようにします。

スキーマを変更するために、sqlite は特定の操作 (テーブル名の変更や列の追加) に対して「ALTER TABLE」構文をサポートしています。これは、既存のテーブルをその場で更新する簡単な方法です。次のドキュメントを参照してください:http://www.sqlite.org/lang_altertable.html「ALTER TABLE」構文でサポートされていない列やその他の変更を削除するには、新しいテーブルを作成し、そのテーブルにデータを移行し、古いテーブルを削除して、新しいテーブルの名前を元の名前に変更します。

おすすめ記事