Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 4 additions & 21 deletions sql-statements/sql-statement-set-role.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,24 +10,15 @@ The `SET ROLE` statement is used to enable roles in the current session. After e

## Synopsis

**SetRoleStmt:**

![SetRoleStmt](/media/sqlgram/SetRoleStmt.png)

**SetRoleOpt:**

![SetRoleOpt](/media/sqlgram/SetRoleOpt.png)

**SetDefaultRoleOpt:**

![SetDefaultRoleOpt](/media/sqlgram/SetDefaultRoleOpt.png)
```ebnf+diagram
SetRoleStmt ::=
"SET" "ROLE" ( "DEFAULT" | "ALL" ( "EXCEPT" Rolename ("," Rolename)* )? | "NONE" | Rolename ("," Rolename)* )?
```

## Examples

Create a user `'u1'@'%'` and three roles: `'r1'@'%'`, `'r2'@'%'` and `'r3'@'%'`. Grant these roles to `'u1'@'%'` and set `'r1'@'%'` as the default role of `'u1'@'%'`.

{{< copyable "sql" >}}

```sql
CREATE USER 'u1'@'%';
CREATE ROLE 'r1', 'r2', 'r3';
Expand All @@ -37,8 +28,6 @@ SET DEFAULT ROLE 'r1' TO 'u1'@'%';

Log in as `'u1'@'%'` and execute the following `SET ROLE` statement to enable all roles.

{{< copyable "sql" >}}

```sql
SET ROLE ALL;
SELECT CURRENT_ROLE();
Expand All @@ -55,8 +44,6 @@ SELECT CURRENT_ROLE();

Execute the following `SET ROLE` statement to enable `'r2'` and `'r3'`.

{{< copyable "sql" >}}

```sql
SET ROLE 'r2', 'r3';
SELECT CURRENT_ROLE();
Expand All @@ -73,8 +60,6 @@ SELECT CURRENT_ROLE();

Execute the following `SET ROLE` statement to enable the default role(s).

{{< copyable "sql" >}}

```sql
SET ROLE DEFAULT;
SELECT CURRENT_ROLE();
Expand All @@ -91,8 +76,6 @@ SELECT CURRENT_ROLE();

Execute the following `SET ROLE` statement to cancel all enabled role(s).

{{< copyable "sql" >}}

```sql
SET ROLE NONE;
SELECT CURRENT_ROLE();
Expand Down