PostgreSQL LOCKコマンドを使用してテーブルをロックする方法

PostgreSQL logo PostgreSQL

LOCKコマンドを使用すると、テーブルをロックすることができます。結合テストで、DB接続タイムアウトなどの異常系のテストを実施する際に便利なコマンドです。

■構文
LOCK TABLE name;

name: テーブル名

■サンプルプログラム概要

employeeテーブルをロックする。

BEGIN; // トランザクションブロックを開始
LOCK TABLE employee; // employeeテーブルを占有ロック
// DB接続タイムアウトなどを発生させたいテストを実施
ROLLBACK; // トランザクションをロールバック
■補足情報

テーブル名の直後に “IN SHARE MODE” を追加すると、テーブル情報の取得は可能だが、登録や更新、削除はできないという状態( 共有ロック )にすることができます。

LOCK TABLE employee IN SHARE MODE; // employeeテーブル共有ロック

ちなみに、サンプルプログラムのようにロックモードを指定していない場合は、最も制限が強い “ACCESS EXCLUSIVE” モードが適用されます。

コメント

タイトルとURLをコピーしました