]lockmodeには以下のいずれかが入ります。TABLEはテーブルレベルのロックを取得します。必要であれば競合するロックが解除されるまで待機します。NOWAITが指定された場合は、対象のロックを取得できなくても待機しません。この場合、すぐにロックが取得できなければ、このコマンドを中止し、エラーを出力します。TABLEといったコマンドはありません。ロックが解除されるのは常にトランザクションの終了時です)。テーブルを参照するコマンドのために自動的にロックを取得する場合、PostgreSQLは常に使用可能な一番弱いロックモードを使用します。TABLEはより制限の強いロックが必要な場合のために用意されています。COMMITTEDでトランザクションを実行するアプリケーションで、トランザクションの間中、テーブルのデータを確実に安定させる必要がある場合を考えます。この場合、問い合わせ実行前にテーブル全体にSHAREロックモードを使用します。これにより、データが同時に変更されるのを防ぎ、それ以降のテーブルの読み取りを安定させることができます。EXCLUSIVEを保持しているトランザクションがコミットまたはロールバックされるのを待つからです。したがって、一度ロックを取得してしまえば、コミットされていない状態の書き込みは存在しないことになります。ロックを解除するまで他のアプリケーションは書き込みを開始することができません。TABLE文を実行する必要があります。シリアライザブルなトランザクション側から参照するデータの状態は、最初にSELECT文またはデータ更新用文が開始された時点で固定されます。TABLEを実行した場合も同時書き込みを防ぐことはできますが、トランザクションの読み込み対象データの値がコミットされた最新の値であることは保証されません。EXCLUSIVEロックモードを使用する必要があります。これによって、この種のトランザクションが同時に複数実行されることがなくなります。EXCLUSIVEを使用しないと、デッドロックが発生する可能性があります。EXCLUSIVEを獲得することができます。EXCLUSIVEを獲得することはできません)。デッドロックを回避するには、全てのトランザクションが、必ず同一オブジェクトに対して同一の順番でロックを取得するようにしてください。1つのオブジェクトに対して複数のロックモードを呼び出す場合、トランザクションは常に最も制限の強いモードを最初に取得しなければなりません。ロックモードとロック取得方針についてのより詳細については項13.3を参照してください。パラメータnameロックする既存のテーブルの名前です(スキーマ修飾名も可)。テーブルは1つひとつLOCKで指定された順番でロックされます。lockmodeロックモードには、取得するロックと競合するロックを指定します。ロックモードについては、項13.3で説明します。EXCLUSIVEが使用されます。TABLEが競合するロックの解放まで待機しないことを指定します。指定したロックがすぐに取得できない場合、トランザクションはアボートされます。MODEには、対象テーブルのSELECT権限が必要です。他の形式のLOCKには、UPDATEまたはDELETE、あるいはその両方の権限が必要です。TABLEはトランザクションブロック内部(BEGIN/COMMITの組み合わせ)でのみ有効です。したがって、トランザクションが終了するとロックも削除されます。TABLEコマンドを実行すると、そのコマンドのみを含むトランザクションが形成されるので、このロックは取得後すぐに削除されます。LOCKが扱うのはテーブルレベルのロックのみです。そのため、モード名にROWが含まれるのは適切ではありません。これらのモード名によって、普通は、ロックされたテーブル内で行レベルのロックを取得できると思ってしまうでしょう。EXCLUSIVEモードは共有可能なロックです。TABLEに関しては、全てのロックモードが同じ意味を持っていることに注意してください。違うのは、どのモードがどのモードと競合するかという規則だけです。SHARE句を参照してください。外部キーテーブルへの挿入を行う際に、プライマリキーテーブルへのSHAREロックを獲得します。レコードがなければROLLBACKしてください。EXCLUSIVEロックを取得します。TABLEはありません。TRANSACTIONが使用されます。PostgreSQLはこのコマンドもサポートしています。TRANSACTIONを参照してください。TABLE構文はOracleのものと互換性があります。