如何在psql中使用多个查询进行原子选择?

问题描述 投票:0回答:1

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

SELECT * FROM User;
SELECT * FROM Submission;

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

所以我有两个问题:

  1. 如何在没有任何连接或显式锁定的情况下以原子方式从不同的表中获取数据?确保在查询之间的任何表上都没有应用任何更改
  2. 哪些查询保证原子行为? SELECT INNER JOIN原子地工作吗?
sql postgresql concurrency atomic
1个回答
0
投票

single transaction中运行两个语句,该语句设置为repeatable read

Quote from the manual

可重复读取隔离级别仅查看事务开始之前提交的数据;它永远不会看到未提交的数据或在并发事务执行事务期间提交的更改。


是的,单个语句总是原子的。即使在语句仍在运行时提交了这些更改,它也不会在运行时看到底层数据的更改。

© www.soinside.com 2019 - 2024. All rights reserved.