繁体   English   中英

如何为多列主键获取唯一的_id列?

[英]How to get unique _id column for a multi-column primary key?

根据一些博客(例如http://reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/)的说法,甚至在这里的一些询问者中也是如此。

在将datababe包含到项目中之前,第一步就是将表的主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来显示从数据库查询的游标内容时,才需ListAdapter 为此,您必须具有一个整数主键列,该游标中的名称为“ _id”

更好的是,每个SQLite数据库表都有一个名为“ rowid”的隐式列。 您甚至不必拥有自己的整数主键列。 只需使用rowid,如下所示:

SELECT rowid AS _id 
   ...

编辑包括@CL对工作联接的解释

显然,对于许多类型的联接,此技巧均无效。 但是,只要行ID在联接中的所有行上都是唯一的,就可以正常工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM