1

通过遵循一些教程,我设法在 iOS 应用程序中创建了一个 SQLite 数据库。我最初期望依赖主键。当时我不知道在 SQLite 中删除或重新创建主键是不可能的,现在我的应用程序很大,为了让它工作,我需要主键保持“有序”。

我正在开发一个任务管理器作为练习,我将数据直接从数据库加载到 TableView,当我删除一行时,我需要修复主键索引。

目前,当我删除一行时会发生这种情况:

ID TXT STAT
1 some_text 1
2 some_text 1
4 some_text 1

正如您ID在删除该行后看到的主键正在跳转一个数字,我怎样才能使其再次变为 1 2 3 等...?

我真的不在乎您提出的解决方案是否浪费了大量资源,这只是一个练习,我需要它工作:D(我不会再犯这个错误了!)

谢谢你。

4

1 回答 1

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 相同的冲突。)

于 2012-09-17T17:44:36.617 回答