EXECUTE AS

使用 EXECUTE AS 命令设置会话的当前用户。

概要

设置当前用户的语法:
EXECUTE AS <target-user-name>

输入

EXECUTE AS 命令的输入如下:
表 1. EXECUTE AS 输入
输入 描述
<目标用户名 现有用户的名称。

输出

EXECUTE AS 命令有以下输出:
表 2. EXECUTE AS 输出
输出 描述
EXECUTE AS 命令成功后系统返回的信息。
ERROR: permission denied. 您必须拥有目标用户的 EXECUTE AS 权限。

描述

该语句允许具有适当权限的用户将其会话的 CURRENT USER 设置为不同的用户。 成功完成该语句后,当前用户就是语法中指定的目标用户。 安全检查基于当前用户的安全配置文件。

current_user 函数返回目标用户。 session_user 函数返回原始会话用户。

EXECUTE AS 与 SET 语句一样,在事务范围之外运行。 允许在显式事务中运行 EXECUTE AS。 回滚事务不会影响 EXECUTE AS 设置。 例如,假设您以 "jdoe的身份运行,并运行以下程序:
BEGIN;
EXECUTE AS dd;
ROLLBACK;
SELECT current_user;
CURRENT_USER 
--------------
DD
(1 row)
需要权限
您必须拥有目标用户的 EXECUTE AS 权限。
常用任务
使用 EXECUTE AS 命令设置会话的当前用户。

用途

以下是使用示例:
EXECUTE AS BOB;