【发布时间】:2019-10-27 03:11:02
【问题描述】:
我当前的 Android 应用程序使用 Room/SQLite 数据库
我的一个房间实体需要一个序列列,每次插入新行时都会递增。
我希望自动生成此序列,但似乎 autoGenerate 仅适用于 PrimaryKey(s)
当它不是主键时,有什么方法可以让 Room 中的 Int 列自动递增?
【问题讨论】:
标签: android android-room
我当前的 Android 应用程序使用 Room/SQLite 数据库
我的一个房间实体需要一个序列列,每次插入新行时都会递增。
我希望自动生成此序列,但似乎 autoGenerate 仅适用于 PrimaryKey(s)
当它不是主键时,有什么方法可以让 Room 中的 Int 列自动递增?
【问题讨论】:
标签: android android-room
在大多数情况下,会自动生成包含唯一值(我认为是整数)的列。这被称为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 列的别名。再次,请参阅我上面提供的链接以获取更多信息。
希望这会有所帮助!
【讨论】: