2017-11-08 13 views
1

私はモバイルアプリケーションに付属する一連のX事前定義されたレコードを含むテーブルを持っており、各レコードは整数の自動インクリメントプライマリキーを持ちます。あらかじめ定義されたデータとユーザーデータを持つテーブルを維持する方法SQLite

今、ユーザーが自分のレコードを追加できるようにしたいと考えています。

しかし、アプリのアップデートでは、アプリでX + 10の事前定義されたレコードを使用したいとします。

カスタムレコードの主キーが他のテーブルの外部キーとして使用されていることに注意してください。

新しいx + 10主キーのIDを出荷時と同じに保ちながら、カスタム追加レコードの外部キーIDの整合性を維持しながらデータベースをアップグレードするにはどうすればよいですか?

答えて

0

アプリケーションのアップグレードに付属する追加の10行を、クライアントが使用する範囲よりも厳密に劣る範囲に挿入して、衝突しないようにして、新しい行に適切に割り当てることができます。既知の数字。

出荷時に出荷された少数の初期行と、クライアントが自分で範囲を予約するために割り当てることができる最初のIDの間に挿入されていない「不感地帯」を最初に作成していない限り、唯一の手段は負の数を使用して10個の追加挿入を実行します。

0

プライマリキーのAUTOINCREMENTキーワードを使用してテーブルを作成した場合、古いキーを再利用することはできません。ユーザーが追加したレコードの複製を追加して、事前定義されたデータでオリジナルを更新する必要があります。また、これらのレコードにリンクする他のテーブルの外部キーも更新する必要があります。

なぜAUTOINCREMENTを使用しましたか?それを使用しない場合は、キーを指定しないと自動的に整数キーがインクリメントされます。 AUTOINCREMENTを使用しなかった場合は、プライマリ・キー(更新時にカスケードに設定されている場合は外部キーを更新する必要があります)を更新して、事前定義されたレコードを必要なキーとともに追加できます。現在の最大のキーが何であるかを調べ、更新されたキーがそれよりも大きいかどうか確認するためにクエリを実行する必要があります。

なぜキー値が重要ですか?あなたのアプリを設計して、そうでないようにすることはできますか?他の列を追加して、より多くのコントロールを持つ代わりに使用しますか?

関連する問題