Перейти к основному содержанию
Позволяет выполнять запросы от имени другого пользователя.

Синтаксис

EXECUTE AS target_user;
EXECUTE AS target_user subquery;
Первая форма (без subquery) задаёт, что все последующие запросы в текущем сеансе будут выполняться от имени указанного target_user. Вторая форма (с subquery) выполняет только указанный subquery от имени указанного target_user. Для работы обеих форм требуется, чтобы параметр конфигурации access_control_improvements.allow_impersonate_user был установлен в 1, а привилегия IMPERSONATE — выдана. Например, следующие команды
GRANT IMPERSONATE ON user1 TO user2;
GRANT IMPERSONATE ON * TO user3;
разрешить пользователю user2 выполнять команды EXECUTE AS user1 ..., а также разрешить пользователю user3 выполнять команды от имени любого пользователя. При работе от имени другого пользователя функция currentUser() возвращает имя этого пользователя, а функция authenticatedUser() возвращает имя пользователя, который фактически прошёл аутентификацию.

Примеры

SELECT currentUser(), authenticatedUser(); -- выводит "default    default"
CREATE USER james;
EXECUTE AS james SELECT currentUser(), authenticatedUser(); -- выводит "james    default"
Последнее изменение 10 июня 2026 г.