SET SESSION AUTHORIZATION

Nom

SET SESSION AUTHORIZATION -- initialise l'identifiant de l'utilisateur de la session et l'identifiant de l'utilisateur courant de la session courante

Synopsis

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

Description

Cette commande initialise l'identifiant de l'utilisateur de la session de l'identifiant de l'utilisateur courant pour la session SQL avec utilisateur. Le nom de l'utilisateur pourrait être soit un identifiant soit une chaîne littérale. En utilisant cette commande, il est possible, par exemple, de devenir temporairement un utilisateur non privilégié et de redevenir plus tard un superutilisateur.

L'identifiant de l'utilisateur de la session est généralement configuré pour être le nom utilisateur fourni par le client (généralement celui qui s'est authentifié). L'identifiant de l'utilisateur courant est normalement identique à l'identifiant de l'utilisateur de la session mais cela pourrait changer temporairement dans le contexte des fonctions SECURITY DEFINER et des mécanismes similaires. L'identifiant de l'utilisateur courant est important pour la vérification des droits.

L'identifiant de l'utilisateur de la session pourrait être modifié seulement si l'utilisateur initial de la session (l'utilisateur authentifié) a le droit de superutilisateur. Sinon, la commande est acceptée seulement si le nom de l'utilisateur authentifié est spécifié.

Les modifieurs SESSION et LOCAL agissent de la même façon que la commande standard SET.

Les formes DEFAULT et RESET réinitialisent les identifiant de l'utilisateur de la session et de l'utilisateur courant pour être ceux de nom de l'utilisateur originellement authentifié. Ces formes pourraient être exécutées par tout utilisateur.

Notes

SET SESSION AUTHORIZATION ne peut pas être utilisé dans une fonction SECURITY DEFINER.

Exemples

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

Compatibilité

Le standard SQL autorise l'apparition de quelques autres expressions à la place du littéral utilisateur qui ne sont pas importantes en practique. PostgreSQL autorise la syntaxe de l'identifiant ("utilisateur") alors que SQL ne le permet pas. SQL n'autorise pas cette commande lors d'une transaction ; PostgreSQL ne fait pas cette restriction parce qu'il n'y a aucune raison de le faire. Les droits nécessaires pour exécuter cette commande sont laissés à la définition de l'implémentation par le standard.