Postgres事务回滚命令未到达数据库时会发生什么?

时间:2016-05-24 18:26:48

标签: database postgresql transactions

Postgres文档的第3.4节涵盖了交易。

我认为交易按照以下规则运作:

  1. 客户端在连接上向数据库服务器发送BEGIN语句。将此连接称为“connection_one”。
  2. 客户端将他们想要的任何查询发送到数据库服务器。所有这些查询都是通过“connection_one”发送的。
  3. 如果在COMMIT语句到达数据库服务器之前,连接(在此示例中为“connection_one”)的任何时间丢失,则数据库服务器将回滚到BEGIN语句之前。
  4. 如果数据库服务器发出并接收到COMMIT语句,则保存更改,然后完成事务块。
  5. 看起来上面的情况并非如此。我的困惑是看起来我必须实际发出一个ROLLBACK命令并让它到达数据库服务器,以便不保存部分更改。这是真的吗,还是我错过了什么?如果是这种情况,有什么方法可以让我发生上述行为或有什么理由我不希望上述行为发生?我关心的是如果在我能够回滚之前连接丢失了。

    感谢。

0 个答案:

没有答案