この形式の REVOKE ステートメントは、データベース全体に適用される権限を取り消します。
呼び出し
このステートメントは、アプリケーション・プログラムに組み込むか、 あるいは動的 SQL ステートメントの使用によって発行することができます。 このステートメントは、動的に作成できる実行可能ステートメントです。 しかし、バインド・オプション DYNAMICRULES BIND を適用する場合は、 ステートメントを動的に作成することはできません (SQLSTATE 42509)。
許可
このステートメントの許可 ID には、以下の特権が少なくとも 1 つ含まれている必要があります。
DBADM 権限を取り消すには、SYSADM 権限が必要です。
他の GRANT ステートメントについては、REVOKE (索引特権)、REVOKE (パッケージ特権)、 REVOKE (スキーマ特権)、REVOKE (サーバー特権)、および REVOKE (表、視点、またはニックネーム特権)を参照してください。
構文
.-,----------------------. V | >>-REVOKE------+-BINDADD-----------+--+--ON DATABASE------------> +-CONNECT-----------+ +-CREATETAB---------+ +-CREATE_NOT_FENCED-+ +-IMPLICIT_SCHEMA---+ +-DBADM-------------+ '-LOAD--------------' .-,------------------------------------. V | >----FROM----+-+-------+---authorization-name--+--+------------>< | +-USER--+ | | '-GROUP-' | '-PUBLIC--------------------------'
説明
DBADM 権限も取り消すのでない限り、 DBADM 権限を与えられている許可 ID から BINDADD 権限を取り消すことはできません。
ユーザーから CONNECT 権限を取り消しても、 そのユーザーに付与されていたデータベースのオブジェクトに対する特権には影響しません。 後で再度そのユーザーに CONNECT 権限が付与された場合でも、 以前に持っていた特権は、明示的に取り消されたのでない限り、 依然としてすべて有効です。
DBADM 権限も取り消すのでない限り、 DBADM 権限を与えられている許可 ID から CONNECT 権限を取り消すことはできません (SQLSTATE 42504)。
DBADM 権限も取り消すのでない限り、 DBADM 権限を与えられている許可 ID から CREATETAB 権限を取り消すことはできません (SQLSTATE 42504)。
DBADM 権限も取り消すのでない限り、 DBADM 権限を与えられている許可 ID から CREATE_NOT_FENCED 権限を取り消すことはできません (SQLSTATE 42504)。
DBADM 権限を PUBLIC から取り消すことはできません (PUBLIC に対して与えることができないので、 当然取り消しもできません)。
DBADM 権限の取り消しによって、 データベース内のオブジェクトに対して authorization-name が持っていた特権が自動的に取り消されることはなく、 また BINDADD、CONNECT、CREATETAB、IMPLICIT_SCHEMA、 または CREATE_NOT_FENCED のいずれの権限も取り消されることもありません。
REVOKE ステートメント自体の許可 ID は使用できません (SQLSTATE 42502)。 REVOKE ステートメントの許可 ID と同じである authorization-name から権限を取り消すことはできません。
規則
例
例 1: USER6 はユーザーであり、グループではない場合に、 ユーザー USER6 の表を作成する特権を取り消します。
REVOKE CREATETAB ON DATABASE FROM USER6
例 2: D024 という名前のグループのデータベースに対する BINDADD 権限を取り消します。 SYSCAT.DBAUTH カタログ視点には、このグループの行として 2 つの行があります。 その 1 つでは GRANTEETYPE が U、もう 1 つでは GRANTEETYPE が G になっています。
REVOKE BINDADD ON DATABASE FROM GROUP D024
この場合、GROUP キーワードの指定は必須です。 そうしないとエラーになります (SQLSTATE 56092)。