PostgreSQL トランザクション分離レベルv9.6 2017/5
Reed Committed (コミット読み取り) デフォルト
→同一トランザクション内でも他トランザクションのコミットした結果の影響を受ける。
Reed Committed (コミット読み取り) デフォルト
Transaction 1
testdb=# BEGIN;
BEGIN
testdb=# SELECT * FROM test_table_2;
col1 | col2
------+------
1 | A
2 | B
3 | C
(3 行)
testdb=# SELECT * FROM test_table_2;
col1 | col2
------+------
1 | A
2 | B
3 | C
(3 行)
/* コミット前の右の更新はまだ反映されていない。 */
testdb=# SELECT * FROM test_table_2;
col1 | col2
------+------
2 | B
3 | C
1 | D
(3 行)
/* コミットした右の更新が反映される。 */
testdb=# COMMIT;
COMMIT
Transaction 2
※ 自トランザクションをCOMMITあるいはROLLBACKしていなくても他のトランザクションのCOMMITした結果を見られる。
testdb=# BEGIN;
BEGIN
testdb=# SELECT * FROM test_table_2;
col1 | col2
------+------
1 | A
2 | B
3 | C
(3 行)
testdb=# UPDATE test_table_2 SET col2='D' WHERE col1= 1;
UPDATE 1
testdb=# SELECT * FROM test_table_2;
col1 | col2
------+------
2 | B
3 | C
1 | D
(3 行)
testdb=# COMMIT;
COMMIT
→同一トランザクション内でも他トランザクションのコミットした結果の影響を受ける。