Postgresql

可以在讀取送出事務中的一個查詢中更改子選擇嗎?

  • June 25, 2018

我在隔離級別設置為 READ COMMITTED(這是 PostgreSQL 中的預設設置)的事務中的單個查詢中多次查詢同一個表。例子是:

BEGIN;

WITH
first AS (SELECT * FROM table),
second AS (SELECT * FROM table)
SELECT ...;

END;

或者

BEGIN;

SELECT * FROM table
UNION ALL
SELECT * FROM table;

END;

第一個結果是否可能sub-SELECT比第二個產生其他結果sub-SELECT?我知道SELECT查詢在單獨執行時可能會產生不同的結果(由於 READ COMMITTED 事務的特性),但我想知道如果它們嵌入在同一個查詢中會發生什麼。

我正在使用 PostgreSQL 9.5。

不,那是不可能的。

單個查詢(甚至具有許多子查詢的查詢也被視為單個查詢)會看到數據庫的一致狀態,就像該查詢開始時一樣。

甚至沒有必要像您那樣使用顯式事務控制。

引用自:https://dba.stackexchange.com/questions/210485