行ロック - FOR SHARE
Sesseion A | Session B |
======================================================================================================
=> BEGIN; SELECT * FROM t1 WHER | => | 1. FOR SHAREでSELECTすると、
E id = 1 FOR SHARE; | => | id=1な行がロックされるが、
id | n | => |
----+----- | => |
1 | 100 | => |
| => |
=*> | => BEGIN; SELECT * FROM t1 WHER | 2. 別のセッションからSELECTし
| E id = 1 FOR SHARE; | ても、ブロックされずにSELECTが
| id | n | 実行される
| ----+----- | もしAがFOR UPDATEでSELECTして
| 1 | 100 | いたら、BのSELECTはブロックされ
| | て、AがCOMMITするまでBは実行さ
| | れない
| |