当前位置: 首页 > 知识库问答 >
问题:

Android Room如何自动生成序列计数

吕衡
2023-03-14

我目前的Android应用程序采用Room/SQLite数据库

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

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

当Int列不是主键时,有没有办法在房间中自动递增?

共有1个答案

何建中
2023-03-14

在大多数情况下,自动生成包含唯一值(我认为是整数)的列。这称为rowid。每次插入一行时,此rowid列将自动递增(有关rowid的详细信息,请参见此处)。

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

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

或在java中:

java prettyprint-override">@Query("SELECT *, rowid FROM my_table")
    public MyEntity get();

请注意,如果主键是整数,则它实际上是rowid列的别名。同样,更多信息请参见我上面提供的链接。

希望这能有所帮助!

 类似资料:
  • 问题内容: 我正在尝试在MySQL中生成序列表,以便可以从获得唯一ID 。 问题是我需要动态地多个序列。 首先,我创建了一个表: 然后尝试使用http://dev.mysql.com/doc/refman/5.0/en/information- functions.html#function_last-insert- id中的 示例获取编号 一段时间后,我意识到我还需要安全地为新标签生成行。因此,

  • 问题内容: 我有一个带有id(guid)列的sql表。如何强制数据库为每条新记录自动生成新的Guid? 问题答案: 添加。

  • 我使用以下命令创建了一个名为hibernate_sequence的序列 这是我的hibernate注释dao 为了向表中插入新记录,hibernate正在生成错误的查询以获取下一个序列值。。Hibernate总是发出此查询。。不管我做什么。。 我使用的是oracle 10G,它总是报告以下错误。。 发出的查询应该是

  • 我试图用RxJava编写一个简单的程序来生成无限自然数序列。到目前为止,我已经找到了使用observable.timer()和observable.interval()生成数字序列的两种方法。我不确定这些函数是否是解决这个问题的正确方法。我期待一个简单的函数,就像Java8中的函数一样,可以生成无限自然数。

  • 问题内容: 有人知道如何从1开始生成,以便下一个对象具有2,依此类推吗? 我尝试了以下方法,但不起作用: 问题答案: 您需要一个 静态的 类成员来跟踪上次使用的索引。确保还实现一个复制构造函数: 更新: 正如@JordanWhite建议的那样,您可能希望使static计数器成为 atomic ,这意味着可以安全地同时使用(即一次在多个线程中使用)。为此,将类型更改为: 增量读取和复位操作变为:

  • 本文向大家介绍jmeter如何自动生成测试报告,包括了jmeter如何自动生成测试报告的使用技巧和注意事项,需要的朋友参考一下 1、准备.jmx脚本文件 2、在脚本文件路径下执行cmd命令: 参数解析:   ● -n: 非GUI模式执行JMeter   ● -t: 执行测试文件所在的位置   ● -l: 指定生成测试结果的保存文件,.jtl文件格式   ● -e: 测试结束后,生成测试报告   ●