.\\" auto-generated by docbook2man-spec $Revision: 1.2 $
.TH "SET SESSION AUTHORIZATION" "" "2007-05-04" "SQL - 言語" "SQLコマンド"
.SH NAME
SET SESSION AUTHORIZATION \- セッションのユーザ識別子、現在のセッションの現在のユーザ識別子を設定する

.SH SYNOPSIS
.sp
.nf
SET [ SESSION | LOCAL ] SESSION AUTHORIZATION \fIusername\fR
SET [ SESSION | LOCAL ] SESSION AUTHORIZATION DEFAULT
RESET SESSION AUTHORIZATION
.sp
.fi
.SH "説明"
.PP
このコマンドはセッションのユーザ識別子、ならびに、現在のSQLセッションコンテキストにおける現在のユーザ識別子を\fIusername\fRに設定します。
ユーザ名は、識別子だけでなく、文字列リテラルとして記述することもできます。
このコマンドを使用すると、例えば、一時的に非特権ユーザとなり、その後に特権ユーザに戻るといったことが可能です。
.PP
セッションのユーザ識別子はクライアントから渡される（おそらく認証済みの）ユーザ名で初期化されます。
現在のユーザ識別子は通常セッションのユーザ識別子と同一ですが、``setuid''関数や類似の機能によって一時的に変更することができます。
SET ROLE [\fBset_role\fR(l)]でこれを変更することもできます。
現在のユーザ識別子は権限の検査に影響を与えます。
.PP
セッションのユーザ識別子は、最初のセッションユーザ（\fI認証されたユーザ\fR）がスーパーユーザ権限を持っている場合にのみ変更できます。
スーパーユーザ権限を持っていない場合、認証されたユーザ名以外を指定してもこのコマンドは受け入れられません。
.PP
\fBSESSION\fR修飾子および\fBLOCAL\fR修飾子は、通常のSET [\fBset\fR(l)]コマンドの場合と同じように機能します。
.PP
DEFAULT構文およびRESET構文は、セッションと現在のユーザ識別子を元の認証ユーザに戻します。
これらの構文は全てのユーザが実行できます。
.SH "例"
.sp
.nf
SELECT SESSION_USER, CURRENT_USER;

 session_user | current_user 
--------------+--------------
 peter        | peter

SET SESSION AUTHORIZATION 'paul';

SELECT SESSION_USER, CURRENT_USER;

 session_user | current_user 
--------------+--------------
 paul         | paul
.sp
.fi
.SH "互換性"
.PP
標準SQLでは、\fIusername\fRリテラルの指定方法としてその他の表現を使用できます。
しかし、この違いは実用上は重要ではありません。
PostgreSQLでは識別子構文（"username"）を使用できますが、SQLでは使用できません。
SQLではこのコマンドをトランザクション中に実行することができませんが、PostgreSQLでは、禁止する理由が見当たらないため、この制限を付けていません。
SESSION修飾子およびLOCAL修飾子はRESET構文同様、PostgreSQLの拡張です。
.PP
標準SQLでは、このコマンドを実行するために必要な権限は、実装に依存するとされています。
.SH "関連項目"
SET ROLE [\fBset_role\fR(l)]
