ios - 删除行后如何重置 Sqlite id 值?

标签 ios xcode sqlite

我已经创建了如下的sqlite数据库

        NSString * sqlStmt =@"CREATE TABLE IF NOT EXISTS SONGS (ID INTEGER PRIMARY KEY AUTOINCREMENT, MOVIENAME TEXT, SONGNAME TEXT)";

删除数据库中的第 7 行后,id 值为 1,2,3,4,5,6,8,9... 通过使用以下代码,其中 idNumber =7。

 const char *dbpath = [databasePath UTF8String];
if (sqlite3_open(dbpath, &_SQliteDB) == SQLITE_OK)
{

    NSString *sql = [NSString stringWithFormat:@"delete from SONGS where ID=%d",idNumber];
    const char *del_stmt = [sql UTF8String];
    char *error ;
    if (sqlite3_exec(_SQliteDB,del_stmt, NULL, NULL, &error) == SQLITE_OK)
    { 
        NSLog(@"sucessfully delete");

    } else
    {
        NSLog(@"unable to delete");
    }
    sqlite3_close(_SQliteDB);
}

else
{
    NSLog(@"unable to open");
}

我需要按照 1、2、3、4、5、6、7、8 的顺序重新排列该顺序吗? 任何帮助将不胜感激。

最佳答案

您不应该重新排序 ID,因为其他表格可能引用了此 ID。因为如果你能做到这一点,那么下一个问题就会出现在你面前。

例如:- 您有第 1、2、3 行,删除第 2 行,然后有 1、3。您可以任意排序。现在的问题是当您要添加以 4 而不是 3 开头的新项目时。

对于您的情况,我建议使用 Row_Number如果是出于显示原因。

数据库中存在间隙没有问题。

关于ios - 删除行后如何重置 Sqlite id 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45707507/

相关文章:

ios - 在 MPMoviePlayerViewController 中恢复视频

python - django.db.utils.IntegrityError : The row in table 'main_page_projects' with primary key '1' has an invalid foreign key 错误

ios - 如何在 handleWatchKitExtensionRequest 中显示 NSLog

ios - 在后台更新位置不会在后台运行后保持应用程序运行

iphone - 如何实现 iPhone 主屏幕之类的重组功能?

ios - 带有 IBOutlet 集合的 UIViewController 类仍然与不再存在的 Storyboard有联系

iphone - 关于 iPhone 中消息访问配置文件 (MAP) 的问题

c++ - 在 Polycode Xcode 项目中加载框架后目录中断

c# - 在 Windows 8.1 (WinRT) 上调用 SQLite3.SetDirectory 会产生 System.AccessViolationException

java - 如何使用 Eclipse 在一般的 java 项目(不特定于 android)中创建 SQLite 数据库?