Библиотека сохранности Android в комнате любезно включает аннотации @Insert и @Update, которые работают для объектов или коллекций. Однако у меня есть прецедент (push-уведомления, содержащие модель), которые потребуют UPSERT, поскольку данные могут или не могут существовать в базе данных.
Sqlite не имеет поддержки, и обходные пути описаны в этом вопросе qaru.site/info/16732/.... С учетом решений там, как можно применить их к Room?
Чтобы быть более конкретным, как я могу реализовать вставку или обновление в Комнате, которые не нарушали бы ограничений внешнего ключа? Использование insert с onConflict = REPLACE приведет к вызову onDelete для любого внешнего ключа для этой строки. В моем случае onDelete вызывает каскад, а повторная установка строки вызывает строки в других таблицах с удаленным внешним ключом. Это НЕ предназначенное поведение.