2012-04-16 12 views
0

現在、サーバー間でデータを同期させる必要のあるアプリケーションを開発しています。アプリはSQLiteを多用しているので、raw sqliteに移り、FMDatabaseを使うことにしました。私たちのテーブルは、データの状態を管理せず、データを収集して送信するだけなので、非正規化され、キーがありません。いくつかの時間間隔(サーバーから取得して新しいコンテンツを挿入する)でテーブルを更新していますが、サーバーにデータを送信する方が頻繁に発生します。FMDatabase:失敗した挿入を残しても安全です(一意のPKキーに違反しました)?

サーバからのデータは、id値(char型GUID値)のフルレコードとして提供されるため、テーブルのPKキーをこれらのidカラムで構成しました。問題は、サーバーからデータを取得するときに、新しいレコードを挿入するだけで、現在、これらのid値を挿入していることです。いくつかのレコードが挿入され(新しい)、IDカラムの一意なPK制約のためにいくつかのレコードが失敗します。私にとって、それは完璧にうまくいっています。コンソール(一意の鍵に違反した)のメッセージを嫌うだけで、パフォーマンスなどに影響しているのかどうかはわかりません。新しいレコードを挿入して既存のものを探し出し、それは無駄です。

また、明示的な内部int id(PKインデックスの方が速い)を作成できましたが、私たちのテーブルはFKと関連していないので冗長です。それについての考えは?

答えて

1

INSERT statementにはオプションのON CONFLICT clauseが付属していますので、警告を抑制するにはINSERT OR IGNOREを使用してください。重複したPKは無視されます。

+0

すばらしい、ありがとう。それはまさに私が探していたものです:) – Centurion

関連する問題