AndroidのRoom永続化ライブラリには、オブジェクトまたはコレクションに対して機能する@Insertおよび@Updateアノテーションが含まれています。ただし、データがデータベースに存在する場合と存在しない場合があるため、UPSERTを必要とするユースケース(モデルを含むプッシュ通知)があります。
Sqliteにはネイティブのアップサートはありません。回避策はこのSO質問で説明されています。そこでの解決策を考えると、どのようにそれらを部屋に適用するのでしょうか?
より具体的には、外部キー制約を壊さないようにRoomに挿入または更新を実装するにはどうすればよいですか?onConflict = REPLACEでinsertを使用すると、その行への外部キーのonDeleteが呼び出されます。私の場合、onDeleteはカスケードを引き起こし、行を再挿入すると、外部キーを持つ他のテーブルの行が削除されます。これは意図された動作ではありません。