locking_specification [...] SQL_request [;]
構文要素
- locking_specification
LOCKING { [ DATABASE ] database_name |
[ TABLE ] table_name |
[ VIEW ] view_name |
ROW
} [ FOR | IN ] lock_type [ MODE ] [ NOWAIT ]
- SQL_request
- 有効なSQLリクエスト。
- LOCKINGをCALL文と一緒に指定することはできません。
- SQL_requestがnullの場合、LOCKの効果は、指定されたオブジェクトにロックを設定するだけです。
- この指定は、行レベルのロック(行ハッシュまたは行キー)には必須ですが、データベース レベル、基本テーブル レベル、およびビューレベルのロックについては任意指定です。
- DATABASE
- 意選択のキーワードで、ロックが設定されるオブジェクトのタイプを指定します。
- database_name
- ロックが設定されるデータベースまたはユーザーの名前。
- TABLE
- 意選択のキーワードで、ロックが設定されるオブジェクトのタイプを指定します。
- table_name
- ロックが設定される基本テーブルの名前を指定します。
- VIEW
- 意選択のキーワードで、ロックが設定されるオブジェクトのタイプを指定します。
- view_name
- ロックが設定されるビューの名前を指定します。
- ROW
- 定義する文に従ってロックが設定される行ハッシュまたは行キーのレベルを指定する任意のキーワード。LOCKING ROWの使用を参照してください。
- lock_type
{ ACCESS |
{ EXCLUSIVE | EXCL } |
READ [ OVERRIDE ] |
SHARE |
WRITE |
CHECKSUM |
LOAD COMMITTED
}
- MODE
- ロック タイプの後の任意のキーワード
- NOWAIT
- 示されたロックが獲得できない場合に、そのリクエストをアボートする必要があります。
- リクエストがリソースを待機する状況や、別のリクエストが使用できるリソースを待機中に固定する状況が望ましくない場合に指定します。
- ACCESS
- 他のユーザーによる書き込みアクセス用にロックされている可能性がある基本テーブルから、データの選択ができるようにします。
- ACCESSロックを使用して選択されたデータは、データがリクエストと同時に変更されることがあるため一貫性に欠けることがあります。そのため、このロックは一時的なデータ調査にだけ使用すべきです。
- ACCESSロックを設定するには、指定されたオブジェクトに対するSELECT権限が必要です。
- EXCLUSIVE
- EXCL
- 他のすべてのユーザーを排除します。
- これは、最も拘束力のあるロックです。
- EXCLUSIVEロックは、データベースに対する構造的な変更を除いて、まれにしか使用されません。
- データベース オブジェクトに対してEXCLUSIVEロックを設定するには、そのオブジェクトに対するDROP権限が必要です。
- READ
- SHARE [Deprecated]
- 読取り操作(SELECTリクエストなど)でのデータの一貫性を保証します。
- 複数のユーザーは、基本テーブルに同時にREADロックを保持することができます。READロックが設定されているかぎり、オブジェクトの変更は許可されません。
- READロックを設定するには、指定されたオブジェクトに対するSELECT権限が必要です。
- OVERRIDE
- クエリーの基礎となる基本テーブルに対するロールバックがRecovery ManagerユーティリティのCANCEL ROLLBACK ON TABLEコマンドを使用して取り消された場合に、単一テーブルSELECT操作にREADロックが許可されます。詳細は、<Teradata Vantage™ - データベース ユーティリティ、B035-1102>を参照してください。
- READロック リクエストを持つOVERRIDEオプションのみを指定できます。
- WRITE
- 単一のユーザーがデータを変更できるようにします。
- WRITEロックが設定されているかぎり、ACCESSロックを使用してデータを見るユーザーを除いて、他のすべてのユーザーはオブジェクトを見たり変更することができなくなります。
- WRITEロックが解除されるまで、ロックされたオブジェクトに対する新しいREADロックは許可されません。
- WRITEロックを設定するには、指定されたオブジェクトに対するUPDATE、INSERT、またはDELETE権限が必要です。
- CHECKSUM
- ストアド プロシージャの外部に送信される更新可能なカーソル クエリーにのみ使用されます。
- LOAD COMMITTED
- ロード コミット読み取りモード。このオプションは、セッション トランザクション分離レベルから独立しています。
- 他のトランザクションによる書き込みアクセス用にロックされている可能性がある実ロード分離テーブルから、コミットされたデータの選択ができるようにします。
- LOAD COMMITTEDロックを設定するには、指定されたオブジェクトに対するSELECT権限が必要です。
- 内部的に、ACCESSロックはロード コミット読み取りモードが指定されると適用されます。