GRANT (シーケンス特権) ステートメント
この GRANT ステートメントのフォームは、シーケンスでの特権を付与します。
呼び出し
このステートメントは、アプリケーション・プログラムに組み込んだり、動的 SQL ステートメントを使用して発行したりすることができます。 これは、DYNAMICRULES の実行動作がパッケージに効力を持つ場合にのみ、動的に準備できる実行可能ステートメントです (SQLSTATE 42509)。
許可
ステートメントの許可 ID によって保持されている特権には、少なくとも以下のいずれかの権限が含まれていなければなりません。
- sequence-name に対する指定された特権ごとに WITH GRANT OPTION
- ACCESSCTRL または SECADM 権限
構文
.-,---------. V | >>-GRANT----+-USAGE-+-+--ON SEQUENCE--sequence-name-------------> '-ALTER-' .-,---------------------------------. V | >--TO----+-+-------+--authorization-name-+-+--------------------> | +-USER--+ | | +-GROUP-+ | | '-ROLE--' | '-PUBLIC------------------------' >--+-------------------+--------------------------------------->< '-WITH GRANT OPTION-'
説明
- USAGE
- nextval-expression または prevval-expression を使用してシーケンスを参照する特権を付与します。
- ALTER
- ALTER SEQUENCE ステートメントを使用してシーケンス・プロパティーを変更する特権を付与します。
- ON SEQUENCE sequence-name
- 指定された特権が付与されるシーケンスを識別します。 暗黙的または明示的スキーマ修飾子を含むシーケンス名は、 現在のサーバーに存在するシーケンスを固有に識別していなければなりません。 この名前によるシーケンスが存在しない場合、エラー (SQLSTATE 42704) が戻されます。
- TO
- 指定された特権を誰に与えるかを指定します。
- USER
- authorization-name がユーザーであることを指定します。
- GROUP
- authorization-name がグループ名であることを指定します。
- ROLE
- authorization-name がロール名であることを指定します。 ロール名は、現行サーバーに存在するものでなければなりません (SQLSTATE 42704)。
- authorization-name,...
- 1 つ以上のユーザー、グループ、またはロールの許可 ID のリストを指定します。
- PUBLIC
- 指定された特権をユーザー (許可 ID) の集合に付与します。
- WITH GRANT OPTION
- 指定した authorization-name に対して、
指定した特権を他のユーザーに与えることを許可します。
WITH GRANT OPTION を省略すると、 指定した authorization-name は以下のいずれかの場合にのみ、 指定された特権を他のユーザーに与えることができます。
- SYSADM または DBADM 権限を持っている。
- 他のソースから、指定された特権を与える許可を受けた。
規則
- 指定したそれぞれの authorization-name に関して、USER、GROUP、ROLE のいずれも指定されていない場合には、次のようになります。
- インスタンスに対して有効なセキュリティー・プラグインによって authorization-name の状況を判別できなければ、エラーが戻されます (SQLSTATE 56092)。
- authorization-name がデータベースでは ROLE として定義され、有効なセキュリティー・プラグインでは GROUP または USER のいずれかとして定義されている場合には、エラーが戻されます (SQLSTATE 56092)。
- 有効になっているセキュリティー ・プラグインに従って authorization-name が USER と GROUP の両方として定義されている場合、 エラーが戻されます (SQLSTATE 56092)。
- 有効になっているセキュリティー ・プラグインに従って authorization-name が USER としてのみ定義されている場合、または未定義の場合、USER であると見なされます。
- 有効になっているセキュリティー ・プラグインに従って authorization-name が GROUP としてのみ定義されている場合、GROUP であると見なされます。
- authorization-name がデータベースで ROLE としてのみ定義されている場合には、ROLE であると見なされます。
- 一般に、GRANT ステートメントはステートメントの許可 ID が与えることを許されている特権の GRANT のみを処理し、 1 つまたは複数の特権が与えられていない場合は警告 (SQLSTATE 01007) を戻します。 どの特権も与えられていない場合は、エラーが戻されます (SQLSTATE 42501)。 ステートメントの処理に使用されるパッケージが、 LANGLEVEL を SQL92E または MIA に設定してプリコンパイルされていた場合、 付与者が GRANT 操作の対象に対して特権を持っていない場合以外は警告が戻されます (SQLSTATE 01007)。
注
- グループに付与される特権: グループに付与される特権は、以下に対する許可検査には使用されません。
- パッケージ内の静的 DML ステートメント
- CREATE VIEW ステートメントの処理過程での基本表
- マテリアライズ照会表の CREATE TABLE ステートメントの処理過程での基本表
- SQL ルーチンの作成
- トリガーの作成
例
- 例 1: シーケンス ORG_SEQ での USAGE 特権をユーザーに付与します。
GRANT USAGE ON SEQUENCE ORG_SEQ TO PUBLIC - 例 2: ユーザー BOBBY に、GENERATE_ID というシーケンスを変更する許可と、
この特権を他のユーザーに付与する許可を与えます。
GRANT ALTER ON SEQUENCE GENERATE_ID TO BOBBY WITH GRANT OPTION
