Pular para o conteúdo principal
Permite executar consultas em nome de outro usuário.

Sintaxe

EXECUTE AS target_user;
EXECUTE AS target_user subquery;
A primeira forma (sem subquery) estabelece que todas as consultas subsequentes na sessão atual serão executadas em nome do target_user especificado. A segunda forma (com subquery) executa apenas a subquery especificada em nome do target_user especificado. Para que ambas as formas funcionem, é necessário que a configuração access_control_improvements.allow_impersonate_user esteja definida como 1 e que o privilégio IMPERSONATE tenha sido concedido. Por exemplo, os seguintes comandos
GRANT IMPERSONATE ON user1 TO user2;
GRANT IMPERSONATE ON * TO user3;
permitem que o usuário user2 execute comandos EXECUTE AS user1 ... e também permitem que o usuário user3 execute comandos como qualquer outro usuário. Ao assumir a identidade de outro usuário, a função currentUser() retorna o nome desse outro usuário, e a função authenticatedUser() retorna o nome do usuário que foi efetivamente autenticado.

Exemplos

SELECT currentUser(), authenticatedUser(); -- retorna "default    default"
CREATE USER james;
EXECUTE AS james SELECT currentUser(), authenticatedUser(); -- retorna "james    default"
Última modificação em 10 de junho de 2026