如何在Objective-C中使用SQLite3中的保存点

如何在Objective-C中使用SQLite3中的保存点,objective-c,ios,sqlite,rollback,Objective C,Ios,Sqlite,Rollback,我正在开发一个iOS应用程序,它有一个相当大的sqlite数据库,每天至少获取一次,如果在事务运行时发生了什么事情,我想使用保存点来恢复它 我一直在运行的语句如下: const char *sqlSetSavePoint = @"savepoint updateSavepoint"; const char *sqlRollback = @"Rollback transaction to savepoint updateSavepoint"; 显然,我省略了许多实际运行这些语句的代码,但由于我

我正在开发一个iOS应用程序,它有一个相当大的sqlite数据库,每天至少获取一次,如果在事务运行时发生了什么事情,我想使用保存点来恢复它

我一直在运行的语句如下:

const char *sqlSetSavePoint = @"savepoint updateSavepoint";

const char *sqlRollback = @"Rollback transaction to savepoint updateSavepoint";
显然,我省略了许多实际运行这些语句的代码,但由于我对其他语句运行相同的方法,并且它们工作正常,我相信问题不存在。我在运行insert事务(插入多达20万行)之前设置保存点,然后如果出现异常或错误,我会尝试回滚

我的问题是,;这些回滚语句正确吗(我只是做错了什么),或者在iOS中使用sqlite3中的保存点还有其他方法吗

编辑:只是为了澄清一下,我试图在运行大量事务之前设置一个保存点,如果其中任何一个事务或从服务器获取数据失败,我希望执行到保存点的完全回滚。就是这样,

"savepoint updateSavepoint"
    ->FetchDatafromServer()
          -> "Begin exclusive transaction"
               //sqlite3_bind functions
          -> "Commit transaction"
    ->FetchDatafromServer()
          -> "Begin exclusive transaction"
               //sqlite3_bind functions
          -> "Commit transaction"
    ->FetchDatafromServer()
          -> "Begin exclusive transaction"
               //sqlite3_bind functions
          -> "Commit transaction"
    ->FetchDatafromServer()
          -> "Begin exclusive transaction"
              !!Failure!!
"Rollback transaction to savepoint updateSavepoint"

您可以在事务内或其他保存点内使用保存点,但您可以


将内部事务替换为保存点。

只需知道您正在使用
NSString
文本来创建
NSString
以获取UTF-8字符串,而您只需执行
const char*sqlSetSavePoint=“savepoint updateSavepoint”.Ha,你说得对。我想我需要更多的咖啡。嗯,我用事务来做插入,但我是用一种分而治之的方式。由于数据量很大,我一次只获取一个表的数据,使用事务插入数据,然后获取下一个表。在开始这一切之前,我设置了一个保存点,如果有任何东西刹车,我想回滚所有东西。但这并没有发生:/在花了一整天的时间重做了大量数据库事务并找到了最好的方法之后,我终于让它按照我想要的方式工作了。衷心感谢您的帮助:)