Android Room如何自动生成序列数

时间:2019-06-12 14:49:16

标签: android android-room

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

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

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

如果不是主键,是否可以在“房间自动递增”中添加一个Int列?

1 个答案:

答案 0 :(得分:1)

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

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

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

或在Java中:

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

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

希望这会有所帮助!