sqlite delete не влияет на базу данных
В моем приложении я пытаюсь удалить одну запись из базы данных sqlite. Я использую следующий код в моем DAO для удаления. он работает со всеми остальными записями, ожидают конкретной, я не могу удалить ее, хотя оператор delete выполняется успешно, я пробовал все, но до сих пор не могу понять, что особенного в этой записи (sqlite3_changes возвращает 0 для этой записи, в то время как для другие возвращают 1, как и ожидалось). Я проверяю, что это не удалено, выбирая из таблицы, я всегда нахожу это там.
Я пытался удалить его из командной строки (sqlite на Mac), но я не могу удалить его. Цените помощь, поскольку я действительно отчаянно здесь.
sqlite3_stmt *deleteVideoStmt = nil;
const char *sql = "delete from video where videoID = ?";
if(sqlite3_prepare_v2([DBUtil db], sql, -1, &deleteVideoStmt, NULL) != SQLITE_OK)
NSAssert1(0, @"Error while creating delete video statement. '%s'", sqlite3_errmsg([DBUtil db]));
sqlite3_bind_text(deleteVideoStmt, 1, [v.videoId UTF8String], -1, SQLITE_TRANSIENT);
double t = CFAbsoluteTimeGetCurrent();
/*
if (sqlite3_exec([DBUtil db], "BEGIN IMMEDIATE TRANSACTION", NULL, NULL, NULL) != SQLITE_OK) {
NSLog(@"couldn't begin transacton!!! %s",sqlite3_errmsg([DBUtil db]));
}
*/
int result = sqlite3_step(stmt);
if(SQLITE_DONE != result){
NSLog(@"Error while executing video stmt. '%s'", sqlite3_errmsg([DBUtil db]));
sqlite3_finalize(stmt);
return NO;
}else{
NSLog(@"Update stmt executed successfully. in %ld ms",lroundf(((CFAbsoluteTimeGetCurrent()-t)*1000)));
/*
if (sqlite3_exec([DBUtil db], "COMMIT TRANSACTION", NULL, NULL, NULL) != SQLITE_OK) {
NSLog(@"couldn't commit transacton!!! %s",sqlite3_errmsg([DBUtil db]));
}
*/
NSLog(@"number of rows affected = %d", sqlite3_changes([DBUtil db]));
return YES;
}