我可以只将 Postgres 事务用于写查询,而使用没有事务的读查询吗?

Can I use Postgres transactions only for write queries and use read queries without transaction?

如果我将事务用于写入操作但不将其用于读取操作,会发生什么情况? 我的用例:

  1. 从数据库中获取一些数据 1(无事务)
  2. 使用 data1(带事务)创建一些 data2
  3. 从数据库中获取一些数据3(无事务)
  4. 使用 data2 和 data3(带事务)创建一些 data4
  5. 如果没有错误提交,否则回滚。

我没有为 2 个读取查询使用事务是不是有什么问题?

Edit/Add/Delete 条记录

当您要确保将一堆行 edit/add/delete 查询一起提交到数据库时,可以使用事务。换句话说,您要确保该组中的所有 sql 命令都成功运行,或者不提交任何命令。例如。您同时为用户 table 和用户地址 table 保存了一条新记录,但如果地址 table 记录失败,您可能不想写入用户 table因为某些原因。在这种情况下,您将为两个命令使用事务。

阅读记录

如果您了解以上内容,您就知道读取 sql 命令不需要事务。

Was the answer helpful? Consider marking the answer tick and upvoting. Thanks

这个顺序好不好就看你的要求了。使用您当前的程序,可能会发生以下情况:

  • 如果您在第 2 步完成之前遇到错误,没有任何改变

  • 如果在第5步完成之前遇到错误,则只有data2,没有data4

  • 如果在第 5 步完成之前没有发生错误,则您有 data2 和 data4

如果这对你来说没问题,那么你所做的就没有问题。