PostgreSQLは、SELECT文を実行すると暗黙的にロックを獲得するということを、システムを止めて初めて知りました。 なので、こういうSQLはまずいです。 SELECT * FROM FooTable; LOCK TABLE FooTable; これを二つ同時に実行するとデッドロックが発生します。 これは、2つのコマンドプロンプトで 画面A BEGIN; // トランザクションの開始 画面B BEGIN; // トランザクションの開始 画面A SELECT * FROM FooTable; 画面B SELECT * FROM FooTable; 画面A LOCK TABLE FooTable; 画面B LOCK TABLE FooTable; と実行すると再現できます。 なんで? 2行目のテーブルロックは、そのトランザクション以外にテーブルにアクセスするトランザクションがないことを保