EXECUTE AS

Utilice el mandato EXECUTE AS para establecer el usuario actual (CURRENT USER) de la sesión.

Sinopsis

Sintaxis para establecer el usuario actual:
EXECUTE AS <target-user-name>

Entradas

El mandato EXECUTE AS tiene la entrada siguiente:
Tabla 1. Entrada de EXECUTE AS
Entrada Descripción
<target-user-name> Nombre de un usuario existente.

Resultados

El mandato EXECUTE AS tiene las salidas siguientes:
Tabla 2. Salidas de EXECUTE AS
Resultado Descripción
EXECUTE AS Mensaje que el sistema devuelve si el mandato se ejecuta correctamente.
ERROR: permission denied. Debe tener el privilegio EXECUTE AS en el usuario de destino.

Descripción

Esta sentencia permite a un usuario con el privilegio adecuado establecer el usuario actual (CURRENT USER) de la sesión en un usuario diferente. Cuando esta sentencia se haya completado satisfactoriamente, el usuario actual será el usuario de destino especificado en la sintaxis. Las comprobaciones de seguridad se basan en el perfil de seguridad de CURRENT USER.

La función current_user devuelve el usuario de destino. La función session_user devuelve el usuario de sesión original.

EXECUTE AS opera fuera del ámbito de transacción, igual que las sentencias SET. Se permite ejecutar EXECUTE AS mientras se está en una transacción explícita. La retrotracción de la transacción no afecta al valor de EXECUTE AS. Por ejemplo, suponga que está ejecutando como jdoe y ejecutando lo siguiente:
BEGIN;
EXECUTE AS dd;
ROLLBACK;
SELECT current_user;
CURRENT_USER 
--------------
DD
(1 row)
Privilegios necesarios
Debe tener el privilegio EXECUTE AS en el usuario de destino.
Tareas comunes
Utilice el mandato EXECUTE AS para establecer el usuario actual (CURRENT USER) de la sesión.

Uso

A continuación se proporciona el uso de muestra:
EXECUTE AS BOB;