Android'in Oda kalıcılığı kitaplığı, nesneler veya koleksiyonlar için çalışan @Insert ve @Update ek açıklamalarını zarif bir şekilde içerir. Bununla birlikte, veriler veritabanında mevcut olabileceği veya bulunmayabileceği için bir UPSERT gerektirecek bir kullanım durumum (bir model içeren push bildirimleri) var.
Sqlite yerel olarak yükseltmeye sahip değildir ve geçici çözümler bu SO sorusunda açıklanmıştır . Buradaki çözümler göz önüne alındığında, bunları Room'a nasıl uygularsınız?
Daha spesifik olmak gerekirse, herhangi bir yabancı anahtar kısıtlamasını bozmayacak bir ekleme veya güncellemeyi Room'da nasıl uygulayabilirim? OnConflict = REPLACE ile insert kullanmak, o satıra yönelik herhangi bir yabancı anahtar için onDelete'in çağrılmasına neden olacaktır. Benim durumumda onDelete bir basamaklamaya neden olur ve bir satırı yeniden eklemek, yabancı anahtarın bulunduğu diğer tablolardaki satırların silinmesine neden olur. Bu amaçlanan davranış DEĞİLDİR.