我已经创建了如下的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/