我是PostgreSQL / libpq的新手。所以请帮我澄清一下我的困惑:
假设我开始执行“START TRANSACTION”'并进行适当的错误检查(PQresultStatus(res)!= [proper_success_value]),我是否需要执行' ROLLBACK'如果插入后出现问题?例如:
在这种情况下,我需要执行' ROLLBACK'在'更新'之后失败?如果' ROLLBACK'也失败了?
答案 0 :(得分:4)
阅读手册最能理解这一点:
https://www.postgresql.org/docs/current/static/tutorial-transactions.html
ROLLBACK TO是重新获得由于错误导致系统处于中止状态的事务块的唯一方法,不能完全回滚并重新启动。
回滚不应该失败。
交易处于中止状态,这意味着您无法在该交易中继续执行任何操作。您可以使用保存点来恢复该事务,但除此之外,您可以执行的只是回滚。