讀已提交隔離級別

讀已提交Read Committed)是Postgres 裡的預設隔離級別。當一個事務運行在這個隔離級別時,一個查詢只能看到查詢開始之前的數據而永遠無法看到臟數據或者是在查詢執行時其他並行的事務提交做的改變。

如果一個正在執行一個 UPDATE 語句(或者 DELETE 或者 SELECT FOR UPDATE)的查詢返回的行正在被另一個並行的未提交的事務更新,那麼第二個試圖更新此行的事務將等待另一個事務的提交或者回卷。如果發生了回卷,等待中的事務可以繼續修改此行。如果發生了提交(並且此行仍然存在﹔也就是說,沒有被另一個事務刪除),這個查詢將對該行再執行一便以檢查新行版本是否滿足查詢搜索條件。如果新行版本滿足查詢搜索條件,那麼該行將被更新(或刪除或被標記為更新)。

注意 SELECTINSERT 語句執行的結果(在一個查詢裡)將不會被並行事務影響。