SQLite C API:运行事务,响应错误



我对SQLite还很陌生,我只是想了解一下运行事务(使用C API)。在这种情况下,我只需要在两个表上运行两个一致的更新。

最简单的方法似乎是本教程中的方法。您只需要sqlite3_exec一个单独的组合命令序列,它以BEGIN开始,以COMMIT结束。因此,您永远不会执行ROLLBACK,并且您可能依赖于SQLite在遇到错误时自动回滚。

问题是,手册中关于处理事务错误的部分相当复杂,我不清楚这是一个好方法。文档还建议手动回滚。

下一种方法是执行单个BEGIN,然后单独运行每个语句,检查错误,最后运行COMMITROLLBACK。这真的更好吗,还是只是繁忙的工作?

sqlite3_exec()将在遇到第一个错误时中止,大多数错误不会导致自动回滚。

您应该首先执行BEGIN,然后执行事务中的所有内容,然后用COMMIT或ROLLBACK结束事务。

在ROLLBACK的情况下,您可以忽略任何错误。要么交易已经回滚,要么你无论如何都无能为力。

最新更新