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;