【问题标题】:Android Room how to auto generate a sequence countAndroid Room如何自动生成序列计数
【发布时间】:2019-10-27 03:11:02
【问题描述】:

我当前的 Android 应用程序使用 Room/SQLite 数据库

我的一个房间实体需要一个序列列,每次插入新行时都会递增。

我希望自动生成此序列,但似乎 autoGenerate 仅适用于 PrimaryKey(s)

当它不是主键时,有什么方法可以让 Room 中的 Int 列自动递增?

【问题讨论】:

    标签: android android-room


    【解决方案1】:

    在大多数情况下,会自动生成包含唯一值(我认为是整数)的列。这被称为rowid。每次插入一行时,此 rowid 列都会自动递增(有关 rowidhere 的更多信息)。

    rowid 通常不包含在 SELECT * 中,因此您需要手动将其包含在您的 DAO @Query 中。见下文:

    @Query("SELECT *, rowid FROM my_table")
        fun get(): MyEntity
    

    或者在java中:

    @Query("SELECT *, rowid FROM my_table")
        public MyEntity get();
    

    请注意,如果您的主键是整数,它实际上是rowid 列的别名。再次,请参阅我上面提供的链接以获取更多信息。

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 2019-09-17
      • 2020-05-19
      • 2020-08-28
      • 2019-06-07
      • 2018-11-25
      • 2017-11-05
      • 2014-03-01
      • 1970-01-01
      • 2021-02-04
      相关资源
      最近更新 更多