テーブルロックモードの関係を把握しやすいように図で表してみました。 () 内はそのロックを自動的に獲得するクエリです。 ■ロックとトランザクション SQL における排他制御の方法として、トランザクションとロックが挙げられます。 複数のクエリをトランザクションでひとつにまとめることで、(デフォルトのトランザクションレベル READ COMMITTED の場合)コミット済みの結果のみ参照されるようになり、トランザクション中の内容を外部からは見えなくなるため一見アトミック性が守られるように見えます。 しかし、複数の接続で同時に既存の同じレコードに対して参照と更新を分けて実行する場合などはトランザクションだけでは限界があるのも事実です。 たとえば以下のテーブルを考えてみましょう。 CREATE TABLE foo ( id int NOT NULL, — 商品の識別番号 price int NOT
![PostgreSQL テーブル LOCK MODE 関係図|てくめも@ecoop.net](https://cdn-ak-scissors.b.st-hatena.com/image/square/8d71ff5111e05619a10d29bb40d7aebaa75c8fbc/height=288;version=1;width=512/https%3A%2F%2Fs0.wp.com%2Fi%2Fblank.jpg)