CREATE ROLE

CREATE ROLEとは、ロールを作成するSQL文である。

構文

新たにロールを作成する。

CREATE ROLE name
name
作成するロールの名前を指定する。ロールは非スキーマオブジェクトなので、スキーマ名を指定することはできない。

権限

CREATE ROLE文を使用するには、CREATE ROLEシステム権限が必要である。

ロールを作成する例を次に示す。

SQL> CREATE ROLE manager

トランザクション

SQLはデータ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)およびトランザクション制御言語(TCL)の4種類に分類される。CREATE ROLE文はDDL(Data Definition Language)の一種である。

DDLに対するトランザクションの扱いは、リレーショナル・データベース管理システムによって異なる。Oracleデータベースの場合、DDL文を実行するとトランザクションは暗黙的にコミットされ、ロールバックできない。

DDLのトランザクション
RDBMS 直前のトランザクション DDL自体のロールバック
Oracle Database 自動的にコミットされる ロールバックできない
MariaDB 自動的にコミットされる ロールバックできない
MySQL 自動的にコミットされる ロールバックできない
PostgreSQL 自動的にコミットされない ロールバックできる
Microsoft SQL Server 自動的にコミットされない ロールバックできる

SQL

CREATE ROLEに関連するSQL文には、次のものがある。

ALTER ROLE
ロールを変更する。
DROP ROLE
ロールを削除する。
GRANT
ロールに権限を付与したり、ユーザにロールを付与する。
REVOKE
ロールから権限を剥奪したり、ユーザからロールを剥奪する。

データディクショナリビュー

CREATE ROLEに関連するデータ・ディクショナリ・ビューには、次のものがある。

DBA_ROLE_PRIVS
Oracleデータベース内のすべてのユーザーおよびロールに付与されたロール
DBA_ROLES
データベース内のすべてのロール
ROLE_ROLE_PRIVS
別のロールに付与されたロール
USER_ROLE_PRIVS
現在のユーザーに付与されたロール