0

我正在为联系人创建一个新数据库,并将 conatctscontract 字段的contact_id 作为主键。我的问题是,如果有人删除联系人中的一行,那么该联系人的 contact_id 是否会被 android 系统重用。如果是这样,那么如何防止在我的应用程序中使用该联系人 ID,或者是否有更好的方法来解决这个问题?

4

2 回答 2

1

我假设您使用 MySQL。数据库系统自动递增contact_id 主键。当该行被删除时,该 id 已经被“使用”并存储在数据库中作为“使用”可以说,即使该行本身已被删除。只要您不重置 auto_increment 起点(语法看起来像这样),它将继续保持这种状态

ALTER TABLE contact AUTO_INCREMENT = 0;

如果您使用 auto_increment 功能,只要您不重置该表的 auto_increment 设置(据我所知),已删除的 contact_id 将不会被重用。它只会从存储在数据库中的最高 ID 继续。

编辑:如果我没记错的话,使用 auto_increment 的列用于存储最新的“auto_incremented”数字的特殊数据库统计表(您不可用,但从数据库中自动存储)。使用上面的语法会将 auto_increment 重置回 0 并从那里恢复,填补已删除的空白。

于 2012-12-16T04:47:38.227 回答
0

如果您指的是内置contactsprovider数据库,则Contacts表和Data表的 id 都为 AUTOINCREMENT。
所以我不认为 id 会被重用。

你可以在这里查看代码库

于 2012-12-16T05:41:04.707 回答