この形式の REVOKE ステートメントは、表、視点、またはニックネームに対する特権を取り消します。
呼び出し
このステートメントは、アプリケーション・プログラムに組み込むか、 あるいは動的 SQL ステートメントの使用によって発行することができます。 このステートメントは、動的に作成できる実行可能ステートメントです。 しかし、バインド・オプション DYNAMICRULES BIND を適用する場合は、 ステートメントを動的に作成することはできません (SQLSTATE 42509)。
許可
このステートメントの許可 ID には、以下の特権が少なくとも 1 つ含まれている必要があります。
CONTROL 特権を取り消すには、SYSADM または DBADM のいずれかの権限が必要です。
カタログの表や視点に対する特権を取り消すには、 SYSADM または DBADM のいずれかの権限が必要です。
他の GRANT ステートメントについては、REVOKE (データベース権限)、REVOKE (索引特権)、 REVOKE (パッケージ特権)、REVOKE (スキーマ特権)、および REVOKE (サーバー特権)を参照してください。
構文
.-PRIVILEGES--. .-TABLE--. >>-REVOKE----+-ALL--+-------------+-+--ON----+--------+---------> | .-,---------------. | | V | | '----+-ALTER------+--+-' +-CONTROL----+ +-DELETE-----+ +-INDEX------+ +-INSERT-----+ +-REFERENCES-+ +-SELECT-----+ '-UPDATE-----' >-----+-table-name-+--------------------------------------------> +-view-name--+ '-nickname---' .-,------------------------------------. V | >----FROM----+-+-------+---authorization-name--+--+------------>< | +-USER--+ | | '-GROUP-' | '-PUBLIC--------------------------'
説明
ALL を使用しない場合、以下に示す 1 つまたは複数のキーワードを使用する必要があります。 各キーワードは、それぞれ説明されている特権を取り消しますが、 その取り消しは ON 文節に指定する表、視点、またはニックネームに当てはまる場合にのみ行われます。 同じキーワードを複数回指定することはできません。
authorization-name から CONTROL 特権を取り消しても、 そのオブジェクトに対してそのユーザーに付与されているその他の特権は取り消されません。
SELECT 特権を取り消すと、視点によっては作動不能になるものがあります。 作動不能な視点については、注 を参照してください。
REVOKE ステートメント自体の ID は使用できません (SQLSTATE 42502)。 REVOKE ステートメントの許可 ID と同じである authorization-name から特権を取り消すことはできません。
規則
ただし、DBADM または SYSADM が明示的に DEFINER から視点の特権すべてを取り消した場合、 SYSCAT.TABAUTH にはその DEFINER についてのレコードが表示されませんが、 視点には何も影響がなく作動可能のままになります。
たとえば、USER1 が所有するパッケージに表 T1 からの SELECT が含まれ、 その表 T1 に対する SELECT 特権が USER1 から取り消された場合、 パッケージは無効としてマークされます。 SELECT 権限が再び付与された場合、 またはそのユーザーに DBADM 権限が与えられている場合には、 パッケージは実行時に正常に再バインドされます。
ただし、DBADM または SYSADM が明示的に DEFINER から表の特権すべてを取り消した場合には、 SYSTABAUTH のその DEFINER についてのレコードは削除されますが、 要約表には何も影響がなく作動可能のままになります。
注: | 表や視点などのオブジェクト相互の可能な従属関係についてのリストは、 規則 に示されています。 |
例
例 1: ユーザー ENGLES から、表 EMPLOYEE に対する SELECT 特権を取り消します。 SYSCAT.TABAUTH カタログ視点にはこの表とユーザーについての行が 1 行あり、 その GRANTEETYPE の値は U です。
REVOKE SELECT ON TABLE EMPLOYEE FROM ENGLES
例 2: 以前にすべてのローカル・ユーザーに与えられた表 EMPLOYEE に対する更新特権を取り消します。 特定のユーザーに対する特権付与には影響を与えない点に注意してください。
REVOKE UPDATE ON EMPLOYEE FROM PUBLIC
例 3: ユーザー PELLOW と MLI、およびグループ PLANNERS から、 表 EMPLOYEE に対する特権をすべて取り消します。
REVOKE ALL ON EMPLOYEE FROM USER PELLOW, USER MLI, GROUP PLANNERS
例 4: JOHN という名前のユーザーから、 表 CORPDATA.EMPLOYEE に対する SELECT 特権を取り消します。 SYSCAT.TABAUTH カタログ視点にはこの表とユーザーについての行が 1 行あり、 その GRANTEETYPE の値は U です。
REVOKE SELECT ON CORPDATA.EMPLOYEE FROM JOHN
または
REVOKE SELECT ON CORPDATA.EMPLOYEE FROM USER JOHN
GROUP JOHN には特権が与えられていないので、 GROUP JOHN から特権を取り消そうとしてもエラーになります。
例 5: JOHN という名前のグループから、 表 CORPDATA.EMPLOYEE に対する SELECT 特権を取り消します。 SYSCAT.TABAUTH カタログ視点にはこの表とユーザーについての行が 1 行あり、 その GRANTEETYPE の値は G です。
REVOKE SELECT ON CORPDATA.EMPLOYEE FROM JOHN
または
REVOKE SELECT ON CORPDATA.EMPLOYEE FROM GROUP JOHN
例 6: ユーザー SHAWN から、 ニックネーム ORAREM1 の索引指定を作成する特権を取り消します。
REVOKE INDEX ON ORAREM1 FROM USER SHAWN