我正在为联系人创建一个新数据库,并将conatctscontract字段的contact_id保留为主键。我的问题是,如果有人删除联系人中的一行,那么android系统将重用该联系人的contact_id。如果是,那么如何防止在我的应用程序中使用该联系人ID,或者是否有更好的方法解决此问题?
答案 0 :(得分:1)
我假设您正在使用MySQL。数据库系统auto_increment 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,它将从那里恢复,填补已删除的空白。
答案 1 :(得分:0)
如果您指的是内置的contactsprovider
数据库,那么Contacts
表和Data
表的ID都为AUTOINCREMENT。
所以我不认为id会被重用。
您可以查看代码库here