REVOKE (表またはビューの特権)
この形式の REVOKE ステートメントは、表またはビューに対する特権を除去します。
呼び出し
このステートメントは、アプリケーション・プログラムに組み込むことができ、また対話式に呼び出すこともできます。 これは、動的に準備できる実行可能ステートメントです。
権限
このステートメントの権限 ID が保持する特権には、少なくとも以下の 1 つ が含まれていなければなりません。
- ステートメント内で識別された、それぞれの表またはビューごとに、
- このステートメントで指定されるすべての特権
- その表またはビューに対する *OBJMGT システム権限
- 表やビューが入っているライブラリーに対する *EXECUTE システム権限
- データベース管理者権限
- セキュリティー管理者権限
構文
.-PRIVILEGES-. >>-REVOKE--+-ALL--+------------+---------------------------+----> | .-,-----------------------------------------. | | V | | '---+-ALTER---------------------------------+-+-' +-DELETE--------------------------------+ +-INDEX---------------------------------+ +-INSERT--------------------------------+ +-REFERENCES--+-----------------------+-+ | | .-,-----------. | | | | V | | | | '-(----column-name-+--)-' | +-SELECT--------------------------------+ '-UPDATE--+-----------------------+-----' | .-,-----------. | | V | | '-(----column-name-+--)-' .-,--------------. .-TABLE-. V | >--ON--+-------+----+-table-name-+-+--FROM----------------------> '-view-name--' .-,---------------------------------. V | >----+-+-------+--authorization-name-+-+----------------------->< | +-USER--+ | | '-GROUP-' | '-PUBLIC------------------------'
説明
- ALL または ALL PRIVILEGES
- 各権限名 から 1 つ以上の特権を取り消します。
取り消される特権は、識別された表および
ビューに関して、権限名 に認可されていた特権です。
表またはビューに対する ALL PRIVILEGES を取り消すのは、*ALL システム権限を取り消すのと同じではないことに注意する必要があります。
ALL を使用しない場合には、以下にリストしたキーワードの 1 つ以上を使用する必要があります。各キーワードはそこで説明されている特権を取り消しますが、ON 文節で指定された表および ビューに当てはまる特権だけが取り消されます。
- ALTER
- 指定した表を変更する特権や、指定した表またはビューに対してコメントを追加したり、ラベルを追加したり、索引を作成したりするための特権を取り消します。
- DELETE
- 指定の表またはビューから行を削除する特権を取り消します。
- INDEX
- 指定の表に索引を作成する特権を取り消します。
- INSERT
- 指定した表またはビューに行を挿入するための特権を取り消します。
- REFERENCES
- その表が親になる参照制約を追加する特権を取り消します。
- REFERENCES (column-name,…)
- 親キーで指定された列を使用して参照制約を追加する特権を取り消します。 それぞれの列名は、ON 文節に指定されている各表の列を識別する非修飾の名前でなければなりません。
- SELECT
- SELECT または CREATE VIEW ステートメントを使用する特権を取り消します。
- UPDATE
- UPDATE ステートメントを使用する特権を取り消します。
- UPDATE (column-name,…)
- 指定された列を更新する特権を取り消します。 それぞれの列名は、ON 文節に指定されている各表の列を識別する非修飾の名前でなければなりません。
- ON table-name または view-name, …
- 特権を取り消す表またはビューを指定します。表名 またはビュー名 は、現行サーバーにある表またはビューを示すものでなければなりませんが、宣言済み一時表を示すものであってはなりません。
- FROM
- 特権を取り消すユーザーを識別します。
- USER
- authorization-name がユーザー・プロファイルであることを指定します。USER が指定される場合、authorization-name はグループ・プロファイルであってはなりません。
- GROUP
- authorization-name がグループ・プロファイルであることを指定します。GROUP が指定される場合、authorization-name は ユーザー・プロファイルであってはなりません。
- authorization-name,…
- 1 つ以上の権限 ID をリストします。同じ権限名 は、複数回指定してはなりません。
- PUBLIC
- PUBLIC に対する特権の付与を取り消します。詳しくは、権限、特権、およびオブジェクト所有権を参照してください。
注
複数の認可: 同じ特権が同じユーザーに対して複数回認可されている場合は、 そのユーザーからその特権を取り消すと、それらの認可はすべて無効になります。
ある特権を取り消すと、その特権がどのようなユーザーに認可されているかには関係なく、 その特権の認可がすべて取り消されます。
WITH GRANT OPTION の取り消し: WITH GRANT OPTION を 取り消す唯一の方法は、ALL を指定して取り消すことです。
特権の警告: ユーザーから特定の特権を取り消しても、 そのユーザーがその特権を必要とする操作を実行できなくなるとは限りません。 例えば、そのユーザーは引き続き PUBLIC による特権またはデータベース管理者権限を持つ場合があります。
複数のシステム権限を 1 つの SQL 特権の取り消しで取り消す場合、 それらのシステム権限の中に 1 つでも取り消すことができないものがあると、警告が出され、 その特権の取り消しでは権限は取り消されません。
対応するシステム権限: 表特権を取り消すと、 対応するシステム権限が取り消されます。 ただし、以下の例外があります。
- 表またはビューに対する特権を取り消した際に、*OBJOPR が取り消されるのは、 *ADD、*DLT、 *READ、および *UPD もすべて取り消された場合だけです。
- ビューに対する権限を取り消す場合、そのビューの定義の全選択で参照されている、 どのような表や ビューからも権限は取り消されません。
SQL 特権に対応するシステム権限の説明については、 GRANT (表またはビューの特権)を参照してください。
INDEX または ALTER 特権のいずれかを取り消すと、システム権限 *OBJALTER が取り消されます。
例
例 1: 表 EMPLOYEE に対する SELECT 特権を、ユーザー ENGLES から取り消します。
REVOKE SELECT
ON TABLE EMPLOYEE
FROM ENGLES
例 2: 以前にはすべてのユーザーに認可していた 表 EMPLOYEE に対する更新特権を取り消します。 特定のユーザーに対する認可には、影響を与えないことに注意してください。
REVOKE UPDATE
ON TABLE EMPLOYEE
FROM PUBLIC
例 3: 表 EMPLOYEE に対するすべての特権を、 ユーザー PELLOW および ANDERSON から取り消します。
REVOKE ALL
ON TABLE EMPLOYEE
FROM PELLOW, ANDERSON
例 4: VIEW1 の column_1 を更新する特権を、FRED から取り消します。
REVOKE UPDATE(column_1)
ON VIEW1
FROM FRED