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;

参考

http://www.geocities.jp/sugachan1973/doc/funto60.html

http://www.asterisk-works.jp/wiki/index.php/PostgreSQL%E3%81%AE%E3%83%88%E3%83%A9%E3%83%B3%E3%82%B6%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%A1%E3%83%A2

  • このエントリーをはてなブックマークに追加

コメントをどうぞ

メールアドレスが公開されることはありません。