首页 > 解决方案 > Room/sqlite 数据库锁和隔离级别

问题描述

(问题是在具有 mvvm 模式和 room/sqlite 数据库的 kotlin android 应用程序的上下文中)

可以说我有一个带有屏幕的 android 应用程序,该应用程序带有一个创建唯一实体的表单。

例如,我创建一个像这样的对象/实体(伪代码):

class Trip {
  string id;
  string name;
  datetime date;
  string countryId;
}

现在,countryId引用国家表并存储国家信息,例如:

class Country {
  string id;
  string name;
  string countryCode;
  boolean allowedForTravel;
}

现在,当我进入Trip创建屏幕时,我有输入字段,name, date并且有一个下拉菜单可以选择一个国家。该下拉列表中充满了SELECT * FROM Countries WHERE allowedForTravel = true.

所以,想象一下场景:

  1. 用户来到旅行创建屏幕
  2. 国家下拉列表被填满
  3. 用户从下拉列表中选择国家 X
  4. countryX 通过其他一些过程(推送通知或其他)在数据库中更新到现在allowedForTravel= false
  5. name,date旅行用过的填充物
  6. 用户点击save按钮

我想将其保存在交易中,以便能够在写入时检查所选国家是否允许旅行。

如何使用 Room 和 SQLlite 来实现这一点?

我相信应该使用一些事务和隔离级别,但不知道哪个以及如何使用?

标签: androidsqliteandroid-room

解决方案


推荐阅读