我是 PostgreSQL/libpq 的新手。所以请帮我澄清我的困惑:
假设我首先执行“START TRANSACTION”并进行适当的错误检查 (PQresultStatus(res) != [proper_success_value]),如果在插入后出现问题,我是否需要执行“ROLLBACK”?例如:
- 开始交易:OK
- 插入 ..:好的
- 更新 ..:失败
在这种情况下,我是否需要在“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.
回滚不能失败。
事务处于中止状态,这意味着您无法继续在该事务中执行任何操作。您可以使用保存点来恢复该事务,但除此之外您所能做的就是回滚。
关于database - 是否需要在出错时执行 'ROLLBACK'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44749200/