他のバージョンの文書11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

SET SESSION AUTHORIZATION

Name

SET SESSION AUTHORIZATION --  セッションのユーザ識別子、現在のセッションの現在のユーザ識別子の設定

Synopsis

SET SESSION AUTHORIZATION 'username'

説明

このコマンドはセッションのユーザ識別子、並びに、現在のSQLセッションコンテキストにおける現在のユーザ識別子を username に設定します。

セッションのユーザ識別子はクライアントから渡された(おそらくは認証された)ユーザ名で初期化されます。現在のユーザ識別子は通常セッションのユーザ識別子と同一ですが、"setuid"関数や似たような機構によって一時的に変更することができます。現在のユーザ識別子は権限の検査に関係します。

このコマンドは、最初のセッションのユーザ(認証済ユーザ)がスーパユーザ権限を持っている場合にのみ実行可能です。接続の間、元の権限は維持されます。例えば、一時的に非特権ユーザとなり、その後に特権ユーザに戻ることが可能です。

SELECT SESSION_USER, CURRENT_USER;
 current_user | session_user
--------------+--------------
 peter        | peter

SET SESSION AUTHORIZATION 'paul';

SELECT SESSION_USER, CURRENT_USER;
 current_user | session_user
--------------+--------------
 paul         | paul

互換性

SQL99

SQL99 では、username リテラルの部分には他の異なった表現を使用します。この違いは実際は重要ではありません。 PostgreSQL では識別子構文("username")を使用できますが、SQLでは使用できません。SQLではこのコマンドをトランザクション中に実行することができませんが、PostgreSQL では、禁止する理由が見当たらないため、この制限をつけていません。標準における、このコマンドを実行するために必要な権限は実装依存の状態です。