是否需要在出错时执行'ROLLBACK'?

Is it required to execute 'ROLLBACK' upon error?

我是 PostgreSQL/libpq 的新手。所以请帮我澄清一下我的困惑:

假设我首先执行 'START TRANSACTION' 并进行适当的错误检查 (PQresultStatus(res) != [proper_success_value]),我是否需要执行 'ROLLBACK' 如果有什么我插入后出错了?例如:

在这种情况下,我是否需要在 'UPDATE' 失败后执行 'ROLLBACK'?另外,如果 'ROLLBACK' 也失败了,我该怎么办?

通过阅读手册可以更好地理解这一点:

https://www.postgresql.org/docs/current/static/tutorial-transactions.html

ROLLBACK TO is the only way to regain control of a transaction block that was put in aborted state by the system due to an error, short of rolling it back completely and starting again.

回滚应该不会失败。

事务处于中止状态,这意味着您无法继续执行该事务中的任何操作。您可以使用保存点来恢复该事务,但除此之外您所能做的就是回滚。