【问题标题】:How can I do atomic selection using multiple queries in psql?如何在 psql 中使用多个查询进行原子选择?
【发布时间】:2019-04-18 00:10:52
【问题描述】:

假设我有 2 个表的 postgresql 数据库:用户和提交,我正在做:

SELECT * FROM User;
SELECT * FROM Submission;

如您所见,这是两个查询,因此可能会对查询之间的任何表应用一些更改

所以我有两个问题:

  1. 如何在没有任何连接或显式锁定的情况下从不同的表中自动获取数据?确保查询之间的任何表都没有应用任何更改

  2. 哪些查询保证原子行为?带有 INNER JOIN 的 SELECT 是否以原子方式工作?

【问题讨论】:

    标签: sql postgresql concurrency atomic


    【解决方案1】:

    在设置为repeatable readsingle transaction 中运行这两个语句。

    Quote from the manual

    Repeatable Read 隔离级别只看到事务开始之前提交的数据;它永远不会看到未提交的数据或并发事务在事务执行期间提交的更改。


    是的,单个语句始终是原子的。它在运行时永远不会看到对基础数据的更改,即使在语句仍在运行时提交了这些更改。

    【讨论】:

      猜你喜欢
      • 2015-03-07
      • 1970-01-01
      • 1970-01-01
      • 2017-07-13
      • 2020-06-13
      • 1970-01-01
      • 2023-03-12
      • 2011-01-26
      • 2021-11-25
      相关资源
      最近更新 更多