看this answer,我试图弄清楚如何创建一个表,该表的列只是ROWID的别名。我想这样做,因为某些android类需要一个名为'_id'的唯一列,但我不希望该col是PRIMARY KEY。我也不能在没有PK的col上使用AUTO_INCREMENT,所以我只想将_id用作别名。我知道我可以在查询中做到这一点,但这对我的情况不切实际。有指针吗?这有可能吗?
谢谢 :)
编辑:真的我只是想能够拥有自己的PK,但也有一个CursorAdapters可以正常工作的id字段等
编辑:查看Do i have to use _ID as a SQlite primary key? and does it have to be an INT? (Android Dev),如果我的PK也是数字类型,则建议在查询中执行此操作,但是如果它是我用于PK的TEXT col,该怎么办? (在这里大声思考)-我想我可以复制CursorAdaptor,而只需复制getString而不是_id col的长字符(再加上,将col的名称用作光标适配器的PK输入,摆脱_id !)或只是在SELECT中为ROWID添加别名作为_id,尽管如此,但还是有点怪癖...
最佳答案
您可能拥有一个完全独立于SQLite内置rowid的主键。
每个SQLite表的每一行都有一个64位带符号整数键,该键唯一地标识其表中的行。该整数通常称为“ rowid”。可以使用与大小写无关的特殊名称之一“ rowid”,“ oid”或“ rowid”代替列名来访问rowid值。
您可以对查询进行表述,以便将隐藏的rowid列放在结果的前面,从而将内置的rowid称为_id
,以使CursorAdaptor
受益:
select _rowid_ as _id, ...
rowid是唯一的,但不必是主键。您可以在CREATE TABLE语句中随意设置主键。