無料スクリプト配布のPHP.TO   PHPの実用的なtips PHPマニュアル MySQLマニュアル Apacheマニュアル PostgreSQLマニュアル マニュアル検索    

SET SESSION AUTHORIZATION

名前

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

概要

SET [ SESSION | LOCAL ] SESSION AUTHORIZATION 

user_name


SET [ SESSION | LOCAL ] SESSION AUTHORIZATION DEFAULT
RESET SESSION AUTHORIZATION

説明

このコマンドはセッションのユーザ識別子、ならびに、現在のSQLセッションにおける現在のユーザ識別子を user_name に設定します。 ユーザ名は、識別子だけでなく、文字列リテラルとして記述することもできます。 このコマンドを使用すると、例えば、一時的に非特権ユーザとなり、その後に特権ユーザに戻るといったことが可能です。

セッションのユーザ識別子はクライアントから渡される(おそらく認証済みの)ユーザ名で初期化されます。 現在のユーザ識別子は通常セッションのユーザ識別子と同一ですが、 SECURITY DEFINER 関数や類似の機能によって一時的に変更される可能性があります。 SET ROLE でこれを変更することもできます。 現在のユーザ識別子は権限の検査に影響を与えます。

セッションのユーザ識別子は、最初のセッションユーザ( 認証されたユーザ )がスーパーユーザ権限を持っている場合にのみ変更できます。 スーパーユーザ権限を持っていない場合、認証されたユーザ名以外を指定してもこのコマンドは受け入れられません。

SESSION 修飾子および LOCAL 修飾子は、通常の SET コマンドの場合と同じように機能します。

DEFAULT 構文および RESET 構文は、セッションと現在のユーザ識別子を元の認証ユーザに戻します。 これらの構文は全てのユーザが実行できます。

Notes

SET SESSION AUTHORIZATION SECURITY DEFINER 関数で使用することはできません。

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

互換性

標準SQLでは、 user_name リテラルの指定方法としてその他の表現を使用できます。 しかし、この違いは実用上は重要ではありません。 PostgreSQL では識別子構文( "username" )を使用できますが、SQLでは使用できません。 SQLではこのコマンドをトランザクション中に実行することができませんが、 PostgreSQL では、禁止する理由が見当たらないため、この制限を付けていません。 SESSION 修飾子および LOCAL 修飾子は RESET 構文同様、 PostgreSQL の拡張です。

標準SQLでは、このコマンドを実行するために必要な権限は、実装に依存するとされています。

関連項目

SET ROLE

powered by SEO.CUG.NET