Postgresql
可以在讀取送出事務中的一個查詢中更改子選擇嗎?
我在隔離級別設置為 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。
不,那是不可能的。
單個查詢(甚至具有許多子查詢的查詢也被視為單個查詢)會看到數據庫的一致狀態,就像該查詢開始時一樣。
甚至沒有必要像您那樣使用顯式事務控制。