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



对于android房间界面,我想获得自动生成的id(作为刚刚插入的记录的主键),这样我就可以将其放入对象中,而无需在插入后执行select,如果没有其他唯一属性或这些记录类型的属性集,select可能会返回错误的记录。

例如,将具有相同名称的两个人插入到同一个表中。您可能会说生成一个复合密钥来创建一个唯一的集合。然而,这可能涉及添加新的字段,否则这些字段是不需要的。

我看到了各种各样的链接,包括下面的链接。有人提到,如果insert方法被声明为返回integer(或long)并成功,则返回的是行id。然而,我的理解是,不能假设行id与主键相同。(参见插入房间后的Rowid)。我不能评论任何帖子,因为我没有足够的信誉点。我感谢您对解决这个问题的好方法/典型方法的评论。

这些是我看过的帖子:

安卓房间-获取新插入行的id与自动生成

https://developer.android.com/training/data-storage/room/accessing-datahttps://commonsware.com/AndroidArch/previews/the-dao-of-entities

迟交答案,仅适用于将来看到此问题的人

SQLite文档它说:

rowid表的PRIMARY KEY(如果有)通常不是表的true主键,因为它不是唯一的底层B树存储引擎使用的密钥。的异常当rowid表声明一个INTEGER PRIMARY KEY时,就会出现此规则。在里面例外情况下,INTEGER PRIMARY KEY将成为rowid的别名。

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

最新更新