Postgres文档的第3.4节介绍了交易。

我认为交易可以按照以下规则进行:

  1. 客户端在连接上将BEGIN语句发送到数据库服务器。 将此连接称为“ connection_one”。
  2. 客户端将他们想要的任何查询发送到数据库服务器。 所有这些查询都是通过“ connection_one”发送的。
  3. 如果在COMMIT语句到达数据库服务器之前任何时候连接(在此示例中为“ connection_one”)丢失,则数据库服务器将回滚到BEGIN语句之前。
  4. 如果数据库服务器发出并接收了COMMIT语句,则将保存更改,然后事务块将完成。

看起来上述情况并非如此。 我的困惑是,看来我实际上必须发出ROLLBACK命令并使其到达数据库服务器,以便不保存部分更改。 真的是这样吗?还是我缺少什么? 如果是这样,是否有任何办法可以使上述行为发生,或者是否出于某些原因我不希望发生上述行为? 我担心的是如果在我能够回滚之前失去连接。

谢谢。

  ask by TheGreg translate from so

本文未有回复,本站智能推荐: