#author("2021-06-21T14:03:24+09:00","default:ryuichi","ryuichi")
#author("2021-06-21T14:06:54+09:00","default:ryuichi","ryuichi")
* テーブルレベルロックモード ACCESS SHARE,ROW SHARE,ROW EXCLUSIVE... [#c54dc504]


|-|ACCESS SHARE|ROW SHARE|ROW EXCLUSIVE|SHARE UPDATE EXCLUSIVE|SHARE|SHARE ROW EXCLUSIVE|EXCLUSIVE|ACCESS EXCLUSIVE|
|ACCESS SHARE||||||||X|
|ROW SHARE|||||||X|X|
|ROW EXCLUSIVE|||||X|X|X|X|
|SHARE UPDATE EXCLUSIVE||||X|X|X|X|X|
|SHARE|||X|X||X|X|X|
|SHARE ROW EXCLUSIVE|||X|X|X|X|X|X|
|EXCLUSIVE||X|X|X|X|X|X|X|
|ACCESS EXCLUSIVE|X|X|X|X|X|X|X|X|
|

- 例えば'''BEGIN; SELECT * FROM t1'''はACCESS SHAREを獲得する。'''BEGIN; ALTER TABLE t1 ADD COLUMN x int'''はACCESS EXCLUSIVEを獲得する
- 上の表にあるようにこの二つのロックは衝突する(X)のでもし先にSELECTを実行していたら、ALTERは実行がブロックされる。SELECTがCOMMITされた後に、ALTERは実行される

** 参考 [#qbb0419d]

https://www.postgresql.org/docs/current/explicit-locking.html#TABLE-LOCK-COMPATIBILITY

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS