首页 > 解决方案 > SQL Select 查询会选择在 Select 查询执行期间插入的记录吗?

问题描述

假设我们有一张bookings包含十亿条记录的表。我们编写了一个简单的查询,通过一些子句SELECT从该表中选择一些记录(与子句中的内容无关。此查询将花费几秒钟)。在执行这个查询之后(在它完成之前),我们在我们的表中插入了一条记录(这条记录满足第一个查询的子句)。WHEREWHERESELECTbookingsWHERESELECT

问题:“当第一个查询完成它的工作时会选择这条新记录SELECT吗? ”

最好我想回答有关 PostgreSQL 案例的问题,但很高兴听到 MySQL、SQL Server 和其他人在这种情况下的表现。

谢谢。

标签: sqlpostgresql

解决方案


当第一个 SELECT 查询完成其工作时,是否会选择这条新记录

不。

每个语句都是一个原子操作,并且看到数据库的一致状态(=快照),就像它在语句开始时一样。

以上适用于 Postgres 和 Oracle(可能也适用于其他 DBMS,但我不能肯定地说。有些支持脏读,但不能保证这一点)


推荐阅读