如何为多列主键获取唯一的_id列?
问题描述:
根据一些博客,如http://reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/,甚至在这里的一些下流道。如何为多列主键获取唯一的_id列?
将数据库包含到项目之前的第一步是将表的主ID字段重命名为“_id”,以便Android知道绑定表的id字段的位置。
应该如何处理具有组合主键的表格 假设我正在创建产品ID和商店ID之间的关系以分配其价格。
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
显示从您的数据库查询光标的内容。您必须在游标中有一个名为“_id”的整数主键列才能这样做
更好的是,每个SQLite数据库表都有一个名为“rowid”的隐式列。你甚至不必拥有自己的整数主键列。只要使用ROWID,就像这样:
SELECT rowid AS _id
...
编辑,包括@ CL的工作说明JOINS
显然,这一招是行不通的,对于很多类型的联接。只要rowid在连接中的所有行上都是唯一的,但它工作正常。
只要其值在查询结果的所有行中都是唯一的,就可以使用某个表中的'rowid'。对于许多联接来说这是真的。 – 2014-10-02 07:57:37
@CL是的,你是绝对正确的。我没有看到如何清楚地解释这一点。回答编辑。谢谢。 – 2014-10-02 13:31:50