×
Мы обрабатываем cookies, чтобы сделать наш сайт удобнее и персонализированнее для вас. Подробнее: политика использования «cookies» и «политики конфиденциальности».

Для самостоятельной настройки ознакомьтесь с инструкцией

Дополнительные настройки cookies в браузерах

Файлы cookie автоматически загружаются в ваш браузер при посещении веб-сайта. У вас есть возможность управлять этими файлами. Если Вы не согласны с использованием файлов cookies, запретите их сохранение на своём устройстве, удалите уже имеющиеся файлы cookies через настройки браузера или прекратите использование сайта.

При отключении обработки cookie наш сайт продолжит функционировать, однако будут использоваться исключительно необходимые технические файлы, без которых работа ресурса невозможна.

Инструкция по отключению cookies
Принять
Настроить
Отклонить

ДОКУМЕНТАЦИЯ

Выберите версию, форк и язык для СУБД Digital Q.DataBase, чтобы прочитать или скачать всю документацию.
Техподдержка
Документация
Диасофт
Авторские права © 2016–2025 ООО "Диасофт Экосистема"
Скачать всю документацию:

6.1.174. SET ROLE

6.1.174. SET ROLE

SET ROLE — установка идентификатора текущего пользователя текущего сеанса

Синтаксис

SET [ SESSION | LOCAL ] ROLE role_name
SET [ SESSION | LOCAL ] ROLE NONE
RESET ROLE

Описание

Данная команда устанавливает идентификатор текущего пользователя текущего SQL-сеанса равным role_name. Имя роли может быть указано либо в виде идентификатора, либо в виде строкового литерала. После SET ROLE, проверка прав доступа для SQL-команд выполняется так, как если бы указанная роль была той, под которой изначально был выполнен вход. Обратите внимание, что SET ROLE и SET SESSION AUTHORIZATION являются исключениями; проверки прав для них по-прежнему используют текущего пользователя сеанса и исходного пользователя сеанса ( аутентифицированный пользователь), соответственно.

Текущий пользователь сеанса должен обладать SET правом для указанной role_name, либо напрямую, либо косвенно через цепочку членства с SET параметром. (Если пользователь сеанса является суперпользователем, можно выбрать любую роль.)

Модификаторы SESSION и LOCAL действуют так же, как и для обычной команды SET SET.

SET ROLE NONE устанавливает текущий идентификатор пользователя равным идентификатору пользователя текущего сеанса, возвращаемому session_user. RESET ROLE устанавливает текущий идентификатор пользователя в значение, заданное при подключении с помощью параметров командной строки, ALTER ROLE, или ALTER DATABASE, если такие настройки существуют. В противном случае, RESET ROLE устанавливает текущий идентификатор пользователя равным идентификатору пользователя текущего сеанса. Эти формы могут быть выполнены любым пользователем.

Примечания

С помощью этой команды можно либо расширить, либо ограничить привилегии пользователя. Если роли пользователя сеанса было предоставлено членство с параметром WITH INHERIT TRUE, она автоматически получает все привилегии каждой такой роли. В этом случае SET ROLE фактически аннулирует все привилегии, за исключением тех, которыми целевая роль обладает непосредственно или которые она наследует. С другой стороны, если роли пользователя сеанса было предоставлено членство с параметром WITH INHERIT FALSE, привилегии предоставленных ролей по умолчанию недоступны. Однако если роль была предоставлена с параметром WITH SET TRUE, пользователь сеанса может использовать SET ROLE для отказа от привилегий, назначенных непосредственно пользователю сеанса, и получения вместо них привилегий, доступных указанной роли. Если роль была предоставлена с параметрами WITH INHERIT FALSE, SET FALSE , то привилегии этой роли не могут быть использованы ни с применением SET ROLE, ни без него. SET ROLE.

SET ROLE имеет действие, аналогичное SET SESSION AUTHORIZATION, однако выполняемые проверки прав доступа существенно различаются. Кроме того, SET SESSION AUTHORIZATION определяет, какие роли допустимы для последующих SET ROLE команд, тогда как смена ролей с помощью SET ROLE не изменяет набор ролей, разрешенных для последующей SET ROLE.

SET ROLE не обрабатывает переменные сеанса, заданные в ALTER ROLE параметрах роли; это происходит только при входе в систему.

SET ROLE не может быть использована в SECURITY DEFINER функции.

Примеры

SELECT SESSION_USER, CURRENT_USER;

 session_user | current_user
--------------+--------------
 peter        | peter

SET ROLE 'paul';

SELECT SESSION_USER, CURRENT_USER;

 session_user | current_user
--------------+--------------
 peter        | paul

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

Digital Q.DataBase допускает использование синтаксиса идентификатора ("имя_роли"), в то время как стандарт SQL требует, чтобы имя роли было записано в виде строкового литерала. SQL не разрешает использование этой команды внутри транзакции; Digital Q.DataBase не накладывает данное ограничение, поскольку для этого нет оснований. SESSION и LOCAL модификаторы являются Digital Q.DataBase расширением, как и RESET синтаксис.

Наверх
свяжитесь
с нами
контакты
Для прямой связи с нами вы можете использовать контакты ниже, либо оставить заявку через форму обратной связи, и мы обязательно свяжемся с вами

*поля обязательные к заполнению