PostgreSQLトランザクション処理

テーブルをロックする

=>BEGIN;
=>LOCK TABLE テーブル名 IN SHARE MODE;
↓諸々処理
↓
=>COMMIT;


SHARE MODEでは別のトランザクションからテーブルの閲覧はできるが、更新はできない。



テーブルの行をロックする

=>BEGIN;
=>SELECT * FROM テーブル名 WHERE id = 1 FOR UPDATE;
↓諸々処理
↓
=>COMMIT;


別のトランザクションからid=1の行は更新できない。


ロックの状態確認

=>select b.relname, a.* from pg_locks a 
LEFT OUTER JOIN pg_class b ON a.relation=b.relfilenode order by a.pid;