Android 如何为多列主键获取唯一的_id列?
根据一些博客,比如甚至在这里的一些Aswer中 在将database包含到项目中之前,第一步是将表的主id字段重命名为“_id”,以便Android知道在哪里绑定表的id字段 对于具有组合主键的表,应该做什么 假设我正在创建产品id和商店id之间的关系,以分配其价格Android 如何为多列主键获取唯一的_id列?,android,database,sqlite,Android,Database,Sqlite,根据一些博客,比如甚至在这里的一些Aswer中 在将database包含到项目中之前,第一步是将表的主id字段重命名为“_id”,以便Android知道在哪里绑定表的id字段 对于具有组合主键的表,应该做什么 假设我正在创建产品id和商店id之间的关系,以分配其价格 CREATE TABLE `Products-Stores` ( `product` INTEGER NOT NULL, `store` INTEGER NOT NULL, `price` INTEGER
CREATE TABLE `Products-Stores` (
`product` INTEGER NOT NULL,
`store` INTEGER NOT NULL,
`price` INTEGER NOT NULL,
PRIMARY KEY(product,store)
);
不需要重命名数据库中的任何列。SQL允许使用如下列别名:
SELECT integer_primary_key AS _id
...
只有在使用ListAdapter
显示从数据库查询的光标内容时,才需要这样做。要执行此操作,必须在光标中有一个名为“\u id”的整数主键列
更好的是,每个SQLite数据库表都有一个名为“rowid”的隐式列。您甚至不必拥有自己的整数主键列。只需使用rowid,如下所示:
SELECT rowid AS _id
...
编辑以包括@CL对工作联接的解释
显然,对于许多类型的联接,此技巧都不起作用。不过,只要rowid在联接中的所有行上都是唯一的,它就可以正常工作。您可以使用某个表中的
rowid
,只要它的值在查询结果的所有行上都是唯一的。这对许多连接都是正确的。@CL是的,你完全正确。我不知道怎么解释得这么清楚。答案已编辑。谢谢