首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Db房间插入重复行?

如何在Db房间插入重复行?
EN

Stack Overflow用户
提问于 2020-05-06 08:52:24
回答 1查看 1K关注 0票数 0

在搜索时,我只遇到一些人在询问如何避免使用room db插入重复行。但我的应用程序有一个功能,用户可以点击一个复制按钮,列表项目将再次插入到数据库中。如果我的表没有在其中一个字段上设置主键,我本可以简单地做到这一点。While I found this solution for SQLite,我不知道如何在Db房间中实现这一点。因为,在编写带有自定义查询的insert查询时,首先将无法实现使用空间的目的。

EN

回答 1

Stack Overflow用户

发布于 2020-05-06 11:54:18

假设你有某种实体

代码语言:javascript
运行
复制
@Entity(tableName = "foo_table")
data class Foo (
    @PrimaryKey(autoGenerate = true) var id: Int,
    // or without autogeneration
    // @PrimaryKey var id: Int = 0,
    var bar:String
)

还有一些带有insert的Dao:

代码语言:javascript
运行
复制
@Insert(onConflict = OnConflictStrategy.REPLACE)
suspend fun insert(foo: Foo)

然后,要复制现有值(copiedValue: Foo),需要以某种方式管理主键:

  1. Scenario 1。您的主键是自动生成的,必须将其设置为默认值才能获得新的自动生成键:

copiedValue.id = 0 yourDao.insert(copiedValue)

  • Scenario 2。您的主键不是自动生成的,您必须手动设置新的主键:

copiedValue.id = ... // some code to set new unique id yourDao.insert(copiedValue)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61631108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档