## Privilegienspezifikation (priv_spec)

Eine Privilegienspezifikation (priv_spec) definiert eine Rolle bzw. eine Menge von Privilegien für entsprechend angegebene Tabellen oder Teile von Tabellen.

### Syntax

<priv_spec> ::= ALL [PRIV[ILEGES]] ON [TABLE] <table_name>,...
| <privilege>,... ON [TABLE] <table_name>,...
| <role_name>

<privilege> ::=
ALTER
| DELETE
| INDEX
| INSERT
| REFERENCES [(<column_name>,...)]
| SELECT [(<column_name>,...)]
| SELUPD [(<column_name>,...)]
| UPDATE [(<column_name>,...)]

### Erläuterung

Keine der angegebenen Tabellen darf eine temporäre Basistabelle sein.

Der Benutzer muss die Berechtigung besitzen, die Privilegien auf den angegebenen Tabellen zu vergeben (GRANT-Anweisung) bzw. zu widerrufen (REVOKE-Anweisung). Für Basistabellen besitzt der Eigentümer der Tabelle diese Berechtigung.

Bei View-Tabellen besitzt auch der Eigentümer nicht immer die Berechtigung, alle Privilegien zu vergeben bzw. zu widerrufen. Welche Privilegien er für eine View-Tabelle vergeben bzw. widerrufen darf, wird vom Datenbanksystem beim Erzeugen der Tabelle festgestellt. Das Resultat hängt vom Typ der Tabelle sowie den Privilegien ab, die der Benutzer auf den in der View-Tabelle selektierten Tabellen besitzt. Der Eigentümer einer Tabelle kann die Privilegien, die er vergeben bzw. widerrufen darf, durch Selektieren der Systemtabelle DOMAIN.PRIVILEGES erfragen.

#### ALL [PRIV[ILEGES]]

Alle Privilegien, die der Benutzer auf Tabellen vergeben darf, werden an die angegebenen Benutzer, Benutzergruppen und Rollen vergeben (GRANT-Anweisung) bzw. widerrufen (REVOKE-Anweisung).

Wenn ein Benutzer, der nicht Eigentümer der Tabelle ist, in einer REVOKE-Anweisung ALL spezifiziert, entzieht er dem angegebenen Benutzer alle von ihm für diese Tabelle vergebenen Privilegien.

Wenn als Privilegienspezifikation eine Rolle angegeben ist, muss sie existieren und der aktuelle Benutzer muss Eigentümer der Rolle sein.

#### ALTER

Erlaubt dem identifizierten Benutzer, die ALTER TABLE-Anweisung für die angegebenen Tabellen auszuführen. Das ALTER-Privileg kann nur für Basistabellen vergeben werden. Der aktuelle Benutzer muss die Berechtigung besitzen, das ALTER-Privileg zu vergeben.

#### DELETE

Erlaubt dem identifizierten Benutzer, Zeilen in den angegebenen Tabellen zu löschen. Der aktuelle Benutzer muss die Berechtigung besitzen, das DELETE-Privileg zu vergeben.

#### INDEX

Erlaubt dem identifizierten Benutzer, die CREATE INDEX- und DROP INDEX-Anweisung für die angegebenen Tabellen auszuführen. Das INDEX-Privileg kann nur für Basistabellen vergeben werden. Der aktuelle Benutzer muss die Berechtigung besitzen, das INDEX-Privileg zu vergeben.

#### INSERT

Erlaubt dem identifizierten Benutzer, Zeilen in den angegebenen Tabellen einzufügen. Der aktuelle Benutzer muss die Berechtigung besitzen, das INSERT-Privileg zu vergeben.

#### REFERENCES

Erlaubt dem identifizierten Benutzer, die angegebene Tabelle als referenzierte Tabelle referenced_table in einer Spaltendefinition oder referentiellen CONSTRAINT-Definition anzugeben.

#### SELECT

Erlaubt dem identifizierten Benutzer, Zeilen in den angegebenen Tabellen zu selektieren. Wenn Spaltennamen angegeben sind, dürfen die Zeilen nur in den dadurch identifizierten Spalten selektiert werden. Der aktuelle Benutzer muss die Berechtigung besitzen, das SELECT-Privileg zu vergeben.

#### SELUPD

Es werden die Privilegien SELECT und UPDATE vergeben. Wenn Spaltennamen angegeben sind, dürfen die Zeilen nur in den dadurch identifizierten Spalten selektiert oder geändert werden. Der aktuelle Benutzer muss die Berechtigung besitzen, das SELECT- und das UPDATE-Privileg zu vergeben.

#### UPDATE

Erlaubt dem identifizierten Benutzer, Zeilen in den angegebenen Tabellen zu ändern. Wenn Spaltennamen angegeben sind, dürfen die Zeilen nur in den dadurch identifizierten Spalten geändert werden. Der aktuelle Benutzer muss die Berechtigung besitzen, das UPDATE-Privileg zu vergeben.

Siehe auch:

INSERT-/UPDATE-/DELETE-Privileg für Eigentümer der View-Tabelle

Privilegien: Überblick