是否需要执行' ROLLBACK'出错了?

时间:2017-06-25 18:12:48

标签: database postgresql transactions libpq

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

假设我开始执行“START TRANSACTION”'并进行适当的错误检查(PQresultStatus(res)!= [proper_success_value]),我是否需要执行' ROLLBACK'如果插入后出现问题?例如:

  • START TRANSACTION:OK
  • INSERT ..:好的
  • 更新..:失败

在这种情况下,我需要执行' ROLLBACK'在'更新'之后失败?如果' ROLLBACK'也失败了?

1 个答案:

答案 0 :(得分:4)

阅读手册最能理解这一点:

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

  

ROLLBACK TO是重新获得由于错误导致系统处于中止状态的事务块的唯一方法,不能完全回滚并重新启动。

回滚不应该失败。

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