获取/返回由Android Room数据库生成的自动生成功能id(作为主键)

4
对于一个Android Room接口,我想获取自动生成的ID(作为刚插入的记录的主键),以便我可以将其放入对象中而不必在插入后执行选择操作,如果没有其他唯一属性或属性集,则选择操作可能返回错误的记录类型。
例如,对于将两个具有相同名称的人插入到同一个表中。您可能会说生成组合键以创建唯一集。但是,这可能涉及添加其他不需要的字段。
我看过各种链接,包括下面的链接。有些提到如果插入方法声明为返回整数(或长整型)并成功,则返回行ID。 但是,我理解行ID不能假定与主键相同。(请参阅Room中插入后的Rowid)。 我无法评论任何帖子,因为我的声望点数不够。
我感谢任何关于解决此问题的好/典型方法的评论。
这些是我查看过的帖子: Android Room - Get the id of new inserted row with auto-generate https://developer.android.com/training/data-storage/room/accessing-data https://commonsware.com/AndroidArch/previews/the-dao-of-entities

这很有趣,但并没有解决问题。我认为,能够将整数键作为行ID的别名等级的控制水平被Room功能隐藏了。 - ozzylee
1个回答

0

对于未来看到这个问题的任何人,这是一个晚回答

SQLite文档中可以看到:

行ID表的主键(如果有)通常不是表的真正主键,因为它不是底层B树存储引擎使用的唯一键。例外情况是当行ID表声明一个INTEGER PRIMARY KEY时。在这种情况下,INTEGER PRIMARY KEY成为rowid的别名。

因此,可以正确地假设插入查询返回的rowId自动递增主键相同。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接