在事务中出错后回滚

时间:2013-04-04 15:19:50

标签: postgresql

对于熟悉Postgresql的人来说,这应该是一个简单的方法:

我的应用程序发出begin_work,执行大量操作,然后发出commit。操作和提交包含在try-catch块中,其catch语句执行rollback。假设:如果在SQL操作期间发生错误,Postgresql将自动回滚事务,因此我的回滚将是多余的无害。这个假设是否正确?

(无论如何我之所以回滚:以防万一与SQL操作无关的异常。)

1 个答案:

答案 0 :(得分:4)

如果发生错误,PostgreSQL实际上不会回滚事务。它会在每个后续语句中失败并出错。你可以在客户端试试这个。

在成功执行任何语句之前,您需要执行回滚。

如果您关闭连接并启动一个新连接,这几乎没什么影响。但是,如果保留连接并运行您希望成功执行的其他语句,则无法正常工作。