ROLE説明このコマンドは現在のSQLセッションにおける現在のユーザ識別子をrole_nameに設定します。ロール名は識別子あるいは文字列リテラルのどちらを使用しても記述することができます。ROLEの後、SQLコマンドに対する権限検査は、指定されたロールで普通にログインした場合と同様に行われます。指定するrole_nameは、現在のセッションユーザがメンバとして属するロールでなければなりません。(セッションユーザがスーパーユーザであった場合、任意のロールを選択することができます。)SESSIONおよびLOCAL修飾子は通常のSETコマンドと同様に動作します。NONEおよびRESET構文は、現在のユーザ識別子を現在のセッションユーザ識別子に戻します。この構文はすべてのユーザが実行することができます。注釈このコマンドを使用して、権限を追加することも制限することもできます。ROLEで設定可能なすべてのロールの権限を持ちます。ROLEは実際、セッションユーザに直接割り当てられている権限、セッションユーザが属するロールに割り当てられている権限の内、指定されたロールで使用可能な権限を残し、他をすべて削除します。セッションユーザのロールがNOINHERITS属性を持つ場合、セッションユーザに直接割り当てられた権限をすべて削除し、指定されたロールで利用可能な権限を獲得します。ROLEを行うと、スーパーユーザ権限を失うことになります。AUTHORIZATIONと似ていますが、行われる権限検査はかなり異なります。ROLEコマンドで変更可能なロール群は変更されません。ROLE設定で指定されたセッション変数を処理しません。これはログイン時のみ適用されます。DEFINER関数内で使用することはできません。paul互換性PostgreSQLでは、識別子構文("rolename")を使用できます。標準SQLではロール名を文字列リテラルとして記述しなければなりません。SQLでは、トランザクション内でこのコマンドを実行することを許可していません。PostgreSQLでは、このように制限する理由がありませんので、この制限はありません。SESSION、LOCAL修飾子、および、RESET構文はPostgreSQLの拡張です。AUTHORIZATION。