## SET-Anweisung (set_statement)

Die SET-Anweisung (set_statement) ändert die Eigenschaften einer Datenbanksitzung.

### Syntax

<set_statement> ::= SET ROLE ALL [EXCEPT <role_name>,...]
| SET ROLE NONE
| SET ROLE <role_name>,... [IDENTIFIED BY <password>]
| SET ISOLATION LEVEL <unsigned_integer>
| SET CURRENT_SCHEMA = <schema_name>

### Beispiele

SQL-Tutorial, Rollen

### Erläuterung

#### SET ROLE

Mittels DEFAULT ROLE wird in der ALTER USER-Anweisung bzw. in der ALTER USERGROUP-Anweisung festgelegt, welche der an den aktuellen Benutzer bzw. die Benutzergruppe vergebenen Rollen in der Benutzersitzung bzw. Gruppenmitgliedssitzung aktiv sind. Wenn eine Rolle aktiv ist, besitzt der aktuelle Benutzer alle Privilegien, die durch die Rolle zusammengefasst sind.

Falls dem aktuellen Benutzer mit Hilfe der ALTER USER-Anweisung bzw. der ALTER USERGROUP-Anweisung eine Rolle zugeordnet ist, die automatisch beim Eröffnen der Sitzung aktiviert wird, so wird sie mit Ausführung der SET-Anweisung deaktiviert, falls sie nicht auch durch die SET ROLE-Angabe der SET-Anweisung identifiziert wird.

· ALL: Alle Rollen, die dem aktuellen Benutzer vergeben wurden, sind aktiv. Durch EXCEPT können einzelne namentlich aufgeführte Rollen hiervon ausgenommen werden.

· NONE: Es ist keine Rolle aktiv.

· Angabe von Rollennamen: Die hierdurch identifizierten Rollen müssen existieren und an den aktuellen Benutzer vergeben sein. Falls für die Rolle ein Kennwort existiert, muss es außer vom Eigentümer der Rolle in der SET-Anweisung angegeben werden.
Die durch den angegebenen Rollennamen identifizierte Rolle wird aktiviert.

#### SET ISOLATION LEVEL

Die Angabe eines Isolation-Levels verändert das Sperrverhalten für alle folgenden SQL-Anweisungen der aktuellen Datenbanksitzung. Der Isolation-Level wird durch eine Integer-Zahl ohne Vorzeichen nach den Schlüsselwörtern ISOLATION LEVEL festgelegt. Folgende Werte sind zulässig: 0, 1, 2, 3, 10, 15, 20 und 30.

Siehe auch:

Konzepte des Datenbanksystems, Isolation-Level

#### SET CURRENT_SCHEMA

Die Angabe eines Schemanamens definiert das angegebene Schema als aktuelles Schema der Datenbanksitzung. Dies bedeutet, dass bei nachfolgenden SQL-Anweisungen bei fehlender Angabe eines Schemanamens implizit immer dieses Schema angenommen wird. Der Schemaname muss ein existierendes Schema identifizieren.