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

SQLite C API: running transaction, responding to errors

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

最简单的方法似乎是 this tutorial 中的方法。您只是 sqlite3_exec 一个组合的命令序列,以 BEGIN 开始并以 COMMIT 结束。所以,你永远不会做 ROLLBACK,并且你可能依赖 SQLite 在遇到错误时自动回滚。

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

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

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

您应该先执行 BEGIN,然后执行事务中的所有操作,然后使用 COMMIT 或 ROLLBACK 结束事务。

在 ROLLBACK 的情况下,您可能会忽略任何错误。要么事务已经被回滚,要么你无能为力。