SET SESSION AUTHORIZATION

Name

SET SESSION AUTHORIZATION -- define o identificador do usuário da sessão e o identificador do usuário corrente, da sessão corrente.

Synopsis

SET SESSION AUTHORIZATION 'nome_do_usuário'

Descrição

Este comando define o identificador do usuário da sessão e o identificador do usuário corrente, do contexto da sessão SQL corrente, como sendo nome_do_usuário.

O identificador do usuário da sessão é inicialmente definido como sendo o (possivelmente autenticado) nome do usuário fornecido pelo cliente. O identificador do usuário corrente normalmente é igual ao identificador do usuário da sessão, mas pode mudar temporariamente no contexto das funções "setuid" e de outros mecanismos semelhantes. O identificador do usuário corrente é relevante para a verificação das permissões.

A execução deste comando é permitida apenas se o usuário inicial da sessão (o usuário autenticado) tiver o privilégio de superusuário. Esta permissão é mantida durante o período da conexão; por exemplo, é possível se tornar temporariamente um usuário sem privilégios e, em seguida, voltar a ser um superusuário.

Exemplos

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

SET SESSION AUTHORIZATION 'paulo';

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

Compatibilidade

SQL99

O SQL99 permite que algumas outras expressões apareçam no lugar de nome_do_usuário, as quais não são importantes na prática. O PostgreSQL permite a sintaxe do identificador ("nome_do_usuário"), que o SQL não permite. O SQL não permite a execução deste comando durante uma transação; O PostgreSQL não faz esta restrição porque não há motivo para fazê-la. O padrão deixa os privilégios necessários para executar este comando por conta da implementação.