共有ロックと排他ロック
H2では、共有ロック (shared locks) と排他ロック(exclusive locks)の2種類のロックが存在する。
共有ロックは、SELECT で取得される。
排他ロックは、SELECT 〜 FOR UPDATE 、INSERT、UPDATE、DELETE などで取得される。
共有ロックが取得されている場合
SQL | WAITするか? |
---|---|
SELECT | しない |
SELECT 〜 FOR UPDATE | する |
INSERT | する |
UPDATE | する |
DELETE | する |
排他ロックが取得されている場合
SQL | WAITするか? |
---|---|
SELECT | する |
SELECT 〜 FOR UPDATE | する |
INSERT | する |
UPDATE | する |
DELETE | する |