Привет, Я DocuDroid!
Оценка ИИ поиска
Спасибо за оценку нашего ИИ поиска!
Мы будем признательны, если вы поделитесь своими впечатлениями, чтобы мы могли улучшить наш ИИ поиск для вас и других читателей.
GitHub

SET SESSION AUTHORIZATION

Устанавливает идентификатор роли сессии и идентификатор текущей роли в рамках сессии.

Синтаксис

SET [SESSION | LOCAL] SESSION AUTHORIZATION <rolename>

SET [SESSION | LOCAL] SESSION AUTHORIZATION DEFAULT

RESET SESSION AUTHORIZATION

Описание

Эта команда меняет идентификатор роли сессии и идентификатор текущей роли в рамках активной SQL-сессии на rolename. Имя роли может быть записано как в виде идентификатора, так и в виде строковой константы. С помощью этой команды можно, например, временно переключиться на непривилегированного пользователя, а затем снова переключиться на суперпользователя.

В качестве идентификатора роли сессии изначально устанавливается имя роли, предоставленное клиентом (возможно, прошедшее проверку подлинности). Идентификатор текущей роли обычно совпадает с идентификатором пользователя сессии, но может временно изменяться в контексте функций setuid и аналогичных механизмов; его также можно изменить с помощью команды SET ROLE. Идентификатор текущего пользователя принимается во внимание при проверке разрешений.

Идентификатор пользователя сессии может быть изменен только в том случае, если начальный пользователь сессии (аутентифицированный пользователь) имеет права суперпользователя. Иначе эта команда принимается только в том случае, если в ней указано имя аутентифицированного пользователя.

Формы DEFAULT и RESET сбрасывают идентификаторы сессии и текущего пользователя так, что текущим становится пользователь, изначально проходивший аутентификацию. Эти формы могут выполняться любым пользователем.

Параметры

Параметр Описание

SESSION

Указывает, что команда действует в рамках текущей сессии. Это поведение по умолчанию

LOCAL

Указывает, что команда действует только в рамках текущей транзакции. После COMMIT или ROLLBACK в силу вновь вступает значение, определенное на уровне сессии. Обратите внимание, что команда SET LOCAL не будет иметь никакого эффекта, если она выполняется вне транзакции

rolename

Имя роли, которая будет установлена

NONE

RESET

Сбросить идентификаторы сессии и текущей роли на идентификатор роли, которая использовалась для входа в систему

Примеры

SELECT SESSION_USER, CURRENT_USER;
 session_user | current_user
--------------+--------------
 peter        | peter
SET SESSION AUTHORIZATION 'paul';

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

Совместимость

Стандарт SQL допускает использование некоторых других выражений вместо строковой константы rolename, но на практике это не очень полезно. Greengage DB принимает идентификаторы (rolename), стандарт SQL — нет. SQL не позволяет выполнять эту команду в транзакции; Greengage DB не накладывает такого ограничения. Модификаторы SESSION и LOCAL являются расширением Greengage DB, как и синтаксис RESET.

См. также