我正在开发一个Android应用程序作为我最后的学校项目,我遇到了一个问题。
我在SQLite中创建了一个表,它存储来自用户的信息,如ID,名称,电话,电子邮件地址等。但我想以有序的方式插入数据,以便始终使用顺序排序插入用户。在我的Add_new_user_activity中,我有一个EditText字段,我希望使用表中现有ID的下一个可用ID动态自动设置该字段,但我不知道如何处理在用户之间删除用户时可能产生的间隙两个连续的IDS。
假设我在表格中有这些连续记录:
用户从1到50,并带有相应的ID。
然后我删除了27和29用户。
下次我要添加一个新用户时,我希望EditText知道ID 26和28之间存在差距,如果添加新用户,则将27作为新用户ID。在这种情况下,如果我再添加2个新用户,他们各自的ID必须是29和51。
有没有办法有效地解决它?
提前谢谢!
答案 0 :(得分:0)
您尝试做的事情听起来很危险,因为这不是AUTO_INCREMENT的预期用途。
如果您确实想要找到最低的未使用键值,请不要使用AUTO_INCREMENT,并手动管理您的键。但是,这不是推荐的做法。
退一步问“为什么需要回收关键值?”无符号INT(或BIGINT)是否提供足够大的密钥空间?
答案 1 :(得分:0)
您需要在数据库中再添加一个字段,说“已删除”,每当您删除用户时,只需将其设置为1.现在,无论何时必须先添加新用户,您都需要获取具有1的用户ID列表在“已删除”字段中按升序排列。列表的第一个值将包含所需的ID。然后,您可以只更新具有该ID的值。如果没有这样的字段,请使用递增ID的插入。