android - 原子更新多个相关表

标签 android mysql sqlite

我正在 Android 中使用 SQLite。我有一个包含三个列表的模型对象,其中一个是列表的列表。所以我有五个表:A 代表对象,B 代表列表列表,C 代表其列表,D 和 E 代表其他两个列表。让我感到困惑的情况是,如果用户正在更新现有对象,并且可能或可能没有对其列表进行任何更改。我想我必须查询每个表 B 到 E 的记录,其外键与我正在更新的记录的主键匹配,然后循环遍历这些结果以查看列表中是否有匹配的项目,手动删除/根据需要插入/更新。但在我看来应该有更好的方法吗?

相关问题:如果我将整个操作包装在 beginTransaction()setTransactionSuccessful() 中,我还需要做其他事情来确保原子性吗?我从未直接处理过数据库中的锁,是否需要向现有查询添加错误检查以处理它们被阻止的事件?是否存在需要手动取消事务的错误情况,或者当我关闭数据库连接时会自动发生这种情况?

最佳答案

看看 SQLite 触发器 here ,这正是您所需要的。

如果在 beginTransaction() 之后某处发生任何错误,则 try catch 异常并且不要将此事务标记为成功。没有 setTransactionSuccessful() 调用您的数据不会受到影响。

关于android - 原子更新多个相关表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31654142/

相关文章:

android - 为黑白(和灰色)Alpha 信息视频图像添加透明度

MySQL,如何从第一个表中选择一行,从第二个表中选择两行

android - 在sqlite中运行时创建数据库表

php - 如何从数据库中同时在两个输入字段上显示相同的序列号

android - 拦截 PopupWindow 中的 Android 菜单按钮

javascript - 检测浏览器是否为 Android 的最轻量级方法是什么?

php - 获取下拉选择以将用户定向到新页面(MySQL && P4A 应用程序框架)

android - 通过 ContentValues 处理 Blob 数据类型

c# - 安卓 JSON 安全

mysql - MariaDB VARCHAR 外键引用带有额外的空格