是否需要在出错时执行'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.
回滚应该不会失败。
事务处于中止状态,这意味着您无法继续执行该事务中的任何操作。您可以使用保存点来恢复该事务,但除此之外您所能做的就是回滚。
我是 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.
回滚应该不会失败。
事务处于中止状态,这意味着您无法继续执行该事务中的任何操作。您可以使用保存点来恢复该事务,但除此之外您所能做的就是回滚。