代码之家  ›  专栏  ›  技术社区  ›  SkAppCoding

Android Room-如果两个文件的组合不存在,则查询仅插入新条目

  •  0
  • SkAppCoding  · 技术社区  · 6 月前

    我有一张房间桌子,上面有身份证、年份和星期。

    enter image description here

    我需要一个查询,只有当表中不存在Year和Week的组合时,才会添加新条目。

    我如何将其存档? 我创建了一个initInsertWeek函数。但我不知道如何存档。

    @Dao
    interface WeeksDao {
    
        @Upsert
        suspend fun upsertWeek(week: Week)
    
        @Insert(onConflict = OnConflictStrategy.IGNORE)
        suspend fun initInsertWeek(week: Week)
    }
    
    1 回复  |  直到 6 月前
        1
  •  2
  •   tyczj    6 月前

    您可以创建一个查询方法来检查是否存在,然后创建一个事务方法来组合检查和插入。

    像这样的东西

    @Query(SELECT * FROM my_table WHERE year = :year AND week = :week")
    fun doesEntryExist(year: String, week: String): List<Week>
    
    @Transaction
    fun insertIfNotExist(week: Week){
        val entries = doesEntryExist(week.year, week.week)
        if(entries.isEmpty()){
            initInsertWeek(week)
        }
    }