我已经设法通过以下教程在iOS应用程序中创建SQLite数据库。我最初期待依赖主键。当时我不知道在SQLite中删除或重新创建主键是不可能的,现在我的应用程序很庞大,为了使它工作,我需要主键保持“有序”。
我正在开发一个任务管理器作为练习,我将数据直接从数据库加载到TableView,当我删除一行时,我需要修复主键索引。
目前,当我删除一行时会发生这种情况:
ID TXT STAT
1 some_text 1
2 some_text 1
4 some_text 1
正如您在删除行后可以看到主键ID
跳过一个数字,我怎样才能将它变为1 2 3等...再次?
我真的不在乎你提出的解决方案是否浪费了很多资源,这只是一个练习而我需要它工作:D(我不会再犯这个错误!)
谢谢。
答案 0 :(得分:2)
首先,将所有ID增加一个大于任何已使用ID的偏移量:
UPDATE mytab SET ID = ID + 1000
然后将ID设置为此记录的数量:
UPDATE mytab SET ID = (SELECT COUNT(*) FROM mytab t2 WHERE t2.ID <= mytab.ID)
(第一个UPDATE
的原因是为了避免一条记录的新ID与另一条记录的旧ID相同的冲突。)