重複する行を挿入すると、AndroidのSQLiteライブラリは競合をどのように解決しますか?私は残念ながらあなたが行がREPLACE Dできるようになりますテーブル定義でUNIQUEインデックスを指定することができ、APIレベル8でAndroidのSQLiteDatabaseの競合解消
答えて
を開始含まれていたSQLiteDatabase.insertOnConflict()
方法を持たない、APIレベル7のために私のアプリを構築しています:
CREATE TABLE mytable (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
UNIQUE (id) ON CONFLICT REPLACE
)
行INSERTまたはUPDATEステートメントがすでに存在しているIDと行を追加しようとすると、既存の行を新しいものと交換されます。
デフォルトでは、重複インデックス挿入時に一意インデックス例外がスローされます。あなたがINSERT INTO ... ON CONFLICT...
を言うことができるSQLiteの中ON CONFLICT
句があります
select * from people where name = 'Smith';
//if resultset is empty then perform insert
insert into people values 'Smith'
:擬似コード - 一般的な解決策は、前の挿入を実行し、チェックレコードの存在です。
ドキュメントをお読みください。 http://www.sqlite.org/lang_conflict.html
実際には、あなたが常にそうしたくない場合は、これを使用してください。紛争に置き換えてください。 –
これは複数の挿入ステートメントで機能しますか? – kaz
- 1. 競合解消?
- 2. 競合解消のGUI
- 3. Gitの競合解消リクエスト
- 4. レポートデザイナーのバージョンの競合を解消
- 5. Microsoft Sync Framework - マージ競合解消ポリシー
- 6. このgithub/herokuの競合を解消する方法
- 7. select2 3.5と4.0の競合を解消する方法
- 8. CSSファイル間の競合を解消する方法
- 9. 解決方法「xamarin androidのSystem.Xml」の競合を解消する方法はありませんか?
- 10. Cassandra - 同一のタイムスタンプを持つ混合列更新の競合解消
- 11. Droolsコンディションの競合/消費の事実?
- 12. gitの競合の解決
- 13. Subclipseの競合の解決
- 14. Rox NIOチュートリアルで競合状態を解消する方法
- 15. meldでsvn競合解消を設定する方法は?
- 16. documentdbの競合解決
- 17. マージ競合の解決
- 18. C#Web解析の競合
- 19. Android SQLiteDatabaseテーブル
- 20. android sqliteDatabase table recreation
- 21. Android SQLiteDatabase on item
- 22. Android FCM +近くの競合
- 23. Androidの競合バージョンgradle
- 24. LIKE付きのAndroid SQLiteDatabaseクエリ
- 25. SQLiteDatabase Androidのパフォーマンス質問
- 26. Android SQLiteDatabase WHERE選択
- 27. Microsoft.Data.Tools.Schema.Sql.UnitTestingアセンブリのアセンブリの競合の解決
- 28. DynamoDB競合解決戦略
- 29. 同期サービスAdo.netの競合の解決
- 30. gitでの競合の解決
+1危険性があり危険ですが、有用な機能私はbeforについて聞いていません。 – piotrpo
実際、すべての場合において、それが慎重に行われ、望ましい結果になるようにする必要があります。ローカルデータベースをリモートデータと同期させるなどの作業に最適です。 –
ありがとうございます。これは今のところうまくいくでしょう。しかし、私が理解しているように、この宣言でテーブルを作成すると、競合が発生するたびに置き換えが行われます。しかし、私が挿入を行うたびに、この種の紛争解決を使用したくないのであればどうしますか? – kibibyte