分配android数据库ID

时间:2011-03-07 00:00:08

标签: android database

这可能是一个简单的问题,但是在创建数据库时,你可以改为分配id而不是自动增加吗?

我想要做的是与人们建立一个数据库,我可以使用他们的电话号码进行查询,以获得有关该人在其他列中的更多信息。

可以这样做,或者我可以用自动递增ID创建数据库吗?

2 个答案:

答案 0 :(得分:1)

我建议用一个用户表和他们的电话号码,并使用该表中的_id列作为链接​​其他表的键。这将使您的维护更加轻松。

答案 1 :(得分:1)

Android使用sqlite数据库;它们带有一个“隐藏”的id列,该列自动递增,并链接到您定义为PRIMARY KEY的任何INTEGER列。

所以你无法摆脱额外的自动递增列(它由sqlite内部使用)。但是没有什么能阻止你定义你自己的非INTEGER类型的PRIMARY KEY列。如果这样做,隐藏的_id列将保持隐藏状态。

所以,你可以这样做:

CREATE TABLE people (
   phone_number VARCHAR(12) PRIMARY KEY,
   firstname VARCHAR(32),
   lastname VARCHAR(32),
   ...
);

并使用phone_number作为此表中的主键,而不必担心隐藏的_id列。

但是,我也建议(如Farray所做)使用整数ID。电话号码是一个非常糟糕的主键,因为人们的电话号码可能会改变,这意味着你必须更新许多表。此外,如果您不存储国际电话号码,您的电话号码可能不是唯一的,因此无法作为主键。