如何解决使用密钥批量删除 Android 房间
我有一个我之前填充的对象表和一个包含数千个 ID 的新列表,这些对象应该在表中。我想删除表中的每个对象,以防其主键不存在于 id 列表中。基本上是批量删除以摆脱旧项目。有没有一种简单的方法可以用 Room 做到这一点?我没有在文档中看到它,但我可能忽略了它。
更清楚地说,我的 id 列表是我不想删除的项目列表,并且超过了 999 sql 变量限制。
解决方法
您始终可以使用 Room 运行自定义查询。也许你可以做一些如下的事情?
@Query("delete from old_table where id not in (:ids)")
int deleteOldItems(int[] ids);
编辑:
由于要匹配和删除的数据数量众多,如果您拆分查询,上述查询将无法满足您的需求。
如果我正确理解了这个问题,那么您可能会考虑这样做。
- 获取旧表中已存在的 ID 列表。
- 将该列表与您拥有的新 ID 列表进行比较。您应该能够找到需要从表中删除的 id。
- 然后使用 ID(现有 - 新)运行删除查询
- 然后使用新添加的项目列表在表中创建新条目。
您也可以在第 3 步和第 4 步中拆分删除和插入操作,因为它们不会发生冲突。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。