REVOKE (シーケンス特権)
この形式の REVOKE ステートメントは、シーケンスに対する特権を取り消します。
呼び出し
このステートメントは、アプリケーション・プログラムに組み込んだり、動的 SQL ステートメントを使用して発行したりすることができます。 このステートメントは、動的に作成できる実行可能ステートメントです。 ただし、BIND オプション DYNAMICRULES BIND を適用する場合、 ステートメントを動的に準備することはできません (SQLSTATE 42509)。
許可
このステートメントの許可 ID が持つ特権には、ACCESSCTRL または SECADM 権限が含まれているか、または sequence-name が含まれるスキーマに対するスキーマ ACCESSCTRL 権限が含まれている必要があります。
構文
説明
- ALTER
- ALTER SEQUENCE ステートメントを使用して、 シーケンスのプロパティーを変更する特権、 またはシーケンス番号の生成を再始動する特権を取り消します。
- USAGE
- nextval-expression または prevval-expression を使用してシーケンスを参照する特権を取り消します。
- ON SEQUENCE sequence-name
- 指定された特権が取り消されるシーケンスを識別します。 暗黙的または明示的スキーマ修飾子を含むシーケンス名は、 現在のサーバーに存在するシーケンスを固有に識別していなければなりません。 この名前によるシーケンスが存在しない場合、エラーが戻されます (SQLSTATE 42704)。
- FROM
- 特権を誰から取り消すかを指定します。
- USER
- authorization-name がユーザーであることを指定します。
- GROUP
- authorization-name がグループ名であることを指定します。
- ROLE
- authorization-name がロール名であることを指定します。
- authorization-name,...
- 1 つ以上のユーザー、グループ、またはロールの許可 ID のリストを指定します。
この許可 ID のリストに、このステートメントを発行するユーザーの許可 ID を含めることはできません (SQLSTATE 42502)。
- PUBLIC
- PUBLIC から指定した特権を取り消します。
- BY ALL
- 指定された各特権を、その付与者にかかわらず、それらの特権を明示的に付与されたユーザーのうち指定された人から取り消します。 これがデフォルトの動作です。
- RESTRICT
- このオプショナル・キーワードは、 取り消される特権に依存するオブジェクトがある場合、 ステートメントが失敗することを示します。
規則
- 指定したそれぞれの authorization-name に関して、USER、GROUP、ROLE のいずれも指定されていない場合には、次のようになります。
- 被認可者を authorization-name とする SYSCAT.SEQUENCEAUTH カタログ・ビューで指定されたオブジェクトのすべての行について、次のことが言えます。
- すべての行の GRANTEETYPE が「U」の場合、USER であると見なされます。
- すべての行の GRANTEETYPE が「G」の場合、GROUP であると見なされます。
- すべての行の GRANTEETYPE が「R」の場合、ROLE であると見なされます。
- すべての行の GRANTEETYPE の値が同じでない場合、エラーが戻されます (SQLSTATE 56092)。
- 被認可者を authorization-name とする SYSCAT.SEQUENCEAUTH カタログ・ビューで指定されたオブジェクトのすべての行について、次のことが言えます。
注
- シーケンスに対する特権をパッケージのバインド時の許可 ID から取り消すと、許可 ID がそのシーケンスに対する特権を別の方法で (例えば、その特権を保持するロールのメンバーシップにより) 保持し続けるのでない限り、パッケージは無効になります。
- 特定の特権を取り消しても、 アクションを実行する権限が必ずしも取り除かれるとは限りません。 PUBLIC またはユーザーの属するグループに他の特権が与えられている場合、 あるいは DBADM などのより上位の権限をユーザーが持っている場合には、 ユーザーは作業を続行できます。
例
- 例 1:
シーケンス GENERATE_ID に対する USAGE 特権をユーザー ENGLES から取り消します。
SYSCAT.SEQUENCEAUTH カタログ・ビューにはこのシーケンスとユーザーについての行が 1 つあり、
その GRANTEETYPE の値は U です。
REVOKE USAGE ON SEQUENCE GENERATE_ID FROM ENGLES - 例 2:
以前にすべてのローカル・ユーザーに与えられたシーケンス GENERATE_ID に対する更新特権を取り消します。
(特定のユーザーに対する特権付与は、影響を受けません。)
REVOKE ALTER ON SEQUENCE GENERATE_ID FROM PUBLIC - 例 3:
シーケンス GENERATE_ID に対するすべての特権を、
ユーザー PELLOW と MLI、およびグループ PLANNERS から取り消します。
REVOKE ALTER, USAGE ON SEQUENCE GENERATE_ID FROM USER PELLOW, USER MLI, GROUP PLANNERS
