【问题标题】:Unique constraints is not working in room database in android唯一约束在 android 的房间数据库中不起作用
【发布时间】:2021-11-23 03:06:32
【问题描述】:
@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,我不知道为什么它会更新前一个值,请参阅在下面的屏幕中。

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

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

【问题讨论】:

  • 看起来他们没有更新,你在插入新值之前清除表。

标签: android android-room-relation


【解决方案1】:

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

我已经给了这个:

@Insert(onConflict = OnConflictStrategy.REPLACE)

更新后

@Insert(onConflict = OnConflictStrategy.IGNORE)

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-21
    • 2018-08-04
    • 2017-03-26
    • 2018-10-29
    • 1970-01-01
    • 2013-01-18
    • 1970-01-01
    • 2016-05-01
    相关资源
    最近更新 更多