0
@Entity(tableName = "DailyGraphData", indices = [Index(value = arrayOf("lastTimeUsed","beginningTime"), unique = true)])
data class DailyGraphData(
    @PrimaryKey(autoGenerate = true)
    val id: Int = 0,
    var appName: String,
    var packageName: String,
    var totalAppTimeInForeground: Long? = 0L,
    var lastTimeUsed: String? = "",
    var beginningTime: String? ="",
    var endTime: String? = "",
    var isChild: Boolean
)

这是我的实体类,其中 beginTime 和 lastTimeUsed 我保持唯一但是当我尝试运行应用程序时,我第一次有 8 个数据即将到来并存储在如下屏幕的表格中

在此处输入图像描述

现在我正在尝试再次插入具有 10 个值的数据,其中 8 个与之前的 2 个新值相同,但是这次 isChild 将是 1,当它尝试插入时,我不知道为什么它会更新前一个值,请参见下面的屏幕. 在此处输入图像描述

您可以在此屏幕中看到所有先前的值更新 ischild true 以及另外两个值条目

我想要的是,如果 8 条记录已经插入!ischild 和 lastTimeused 和 begtime 在我尝试插入另一个时是相同的,那么它应该插入只插入新的 l​​asttime used 并请求时间请帮助我我做错了什么

4

1 回答 1

0

如果约束为真,它得到了我不得不忽略的解决方案。

我给了这个:

@Insert(onConflict = OnConflictStrategy.REPLACE)

更新后

@Insert(onConflict = OnConflictStrategy.IGNORE)

如果请求时间和结束时间已经存在于数据库表中,则它不会插入新数据

于 2021-11-23T07:12:11.723 回答