## REVOKE-Anweisung (revoke_statement)

Die REVOKE-Anweisung (revoke_statement) widerruft Privilegien.

### Syntax

<revoke_statement> ::= REVOKE <priv_spec>,... FROM <grantee>,... [<cascade_option>]
| REVOKE <schema_priv_spec> FROM <grantee>,...
| REVOKE EXECUTE ON <dbproc_name> FROM <grantee>,...
| REVOKE EXECUTE ON <dbfunction_name> FROM <grantee>,...
| REVOKE SELECT ON <sequence_name> FROM <grantee>,... [<cascade_option>]

<grantee> ::= <user_name> | <usergroup_name> | <role_name> | PUBLIC

### Beispiele

SQL-Tutorial, Datenbankbenutzer und ihre Privilegien, Rollen

### Erläuterung

Der Eigentümer einer Tabelle oder eines Schemas kann jedem Datenbankbenutzer die für diese Tabelle bzw. dieses Schema vergebenen Privilegien entziehen.

Ist ein Datenbankbenutzer nicht Eigentümer der Tabelle oder des Schemas, kann er nur die Privilegien entziehen, die er selbst vergeben hat.

Wenn für eine Tabelle das SELECT-Privielg ohne Angabe von Spaltennamen vergeben wurde, dann wird durch REVOKE SELECT (<column_name>,...) das SELECT-Privileg für die angegebenen Spalten entzogen, das SELECT-Privileg für die nicht vorkommenden Spalten der Tabelle besteht anschließend weiter. Entsprechendes gilt für das UPDATE-, REFERENCES- und SELUPD-Privileg.

#### <grantee>

Der Eigentümer eines Objekts, für das Privilegien vergeben werden, darf nicht in der grantee-Liste enthalten sein. Ein Datenbankbenutzer, der in der grantee-Liste erscheint, darf kein Mitglied einer Benutzergruppe bezeichnen.

##### PUBLIC

Die aufgeführten Privilegien werden allen zu diesem und zu einem späteren Zeitpunkt existierenden Datenbankbenutzern entzogen.

Die REVOKE-Anweisung kann kaskadieren, d.h. wird einem Benutzer ein Privileg entzogen, so kann das dazu führen, dass dieses Privileg weiteren Benutzern entzogen wird, die dieses Privileg von dem angegebenen Benutzer erhalten haben.

Seien U1, U2 und U3 Benutzer.
U1 vergibt an U2 die Privilegienmenge P WITH GRANT OPTION.
U2 vergibt an U3 die Privilegienmenge P' (P'<=P).

Wenn U1 dem Benutzer U2 die Privilegienmenge P'' (P''<=P) entzieht, so wird dem Benutzer U3 implizit die Privilegienmenge (P'*P'') entzogen.

● Wenn dem Eigentümer einer View-Tabelle das SELECT-Privileg für eine Spalte entzogen wird, die als selektierte Spalte, jedoch nicht in der table_expression der View-Definition auftritt (CREATE VIEW-Anweisung), dann wird die durch select_column definierte Spalte aus der View-Tabelle gelöscht.
Wenn diese View-Tabelle in der FROM-Klausel einer weiteren View-Tabelle verwendet wird, so wird das beschriebene Verfahren rekursiv auf diese View-Tabelle angewendet.

● Wenn dem Eigentümer einer View-Tabelle das SELECT-Privileg für eine Spalte oder Tabelle entzogen wird, die in der table_expression der View-Definition auftritt, dann wird die View-Tabelle mit allen von ihr abhängigen View-Tabellen, Privilegien und Synonymen gelöscht, wenn keine CASCADE-Option oder die CASCADE-Option CASCADE angegeben ist. Bei Angabe der CASCADE-Option RESTRICT scheitert die REVOKE-Anweisung.

#### REVOKE <schema_priv_spec>

Durch REVOKE CREATEIN ON wird dem durch grantee identifizierten Benutzer die Berechtigung entzogen, Datenbankobjekte im angegebenen Schema zu erzeugen. Datenbankobjekte, die der in grantee angegebene Benutzer bereits im angegebenen Schema erzeugt hat, bleiben bestehen.

Durch REVOKE DROPIN ON wird dem durch grantee identifizierten Benutzer die Berechtigung entzogen, Datenbankobjekte im angegebenen Schema zu löschen.

#### REVOKE EXECUTE ON

Durch REVOKE EXECUTE wird dem durch grantee identifizierten Benutzer die Berechtigung entzogen, die angegebene Datenbankprozedur oder Datenbankfunktion auszuführen. Die Berechtigung zur Ausführung kann nur vom Eigentümer der Datenbankprozedur oder Datenbankfunktion entzogen werden.

#### REVOKE SELECT ON

Durch REVOKE SELECT wird dem durch grantee identifizierten Benutzer die Berechtigung entzogen, die angegebene Sequenz zu verwenden. Auch diese REVOKE-Anweisung kann kaskadieren.

Siehe auch:

Privilegien: Überblick