6

对于熟悉 Postgresql 的人来说,这应该很容易:

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

(无论如何我要回滚的原因:以防发生与 SQL 操作无关的异常。)

4

1 回答 1

4

如果发生错误,PostgreSQL 并不会真正回滚事务。它使每个后续语句都失败并出现错误。你可以在客户端试试这个。

您需要先执行回滚,然后才能成功执行任何语句。

如果您关闭连接并启动一个新连接,这没什么影响。但是,如果您保留连接并运行您希望成功执行的其他语句,它将不起作用。

于 2013-04-04T15:33:54.893 回答