SET SESSION AUTHORIZATION
设置当前会话的会话用户标识符和当前用户标识符
英文手册覆盖始于 PostgreSQL 6.4. 来源历史与运行验证各自保留独立版本边界。
当前阅读 PG 18·选择有来源记录的版本
- anchor
- SQL-SET-SESSION-AUTHORIZATION
- file
- sql-set-session-authorization.html
- lang
- en
- name
- SET SESSION AUTHORIZATION
- purpose
- set the session user identifier and the current user identifier of the current session
- purpose zh
- 未知
- sections same as
- 未知
- slug
- 18
- synopsis html
- SET [ SESSION | LOCAL ] SESSION AUTHORIZATION <em class="replaceable"><code>user_name</code></em> SET [ SESSION | LOCAL ] SESSION AUTHORIZATION DEFAULT RESET SESSION AUTHORIZATION
- synopsis text
- SET [ SESSION | LOCAL ] SESSION AUTHORIZATION user_name SET [ SESSION | LOCAL ] SESSION AUTHORIZATION DEFAULT RESET SESSION AUTHORIZATION
语法
SET [ SESSION | LOCAL ] SESSION AUTHORIZATION user_name
SET [ SESSION | LOCAL ] SESSION AUTHORIZATION DEFAULT
RESET SESSION AUTHORIZATION语法图
从左向右阅读;分支表示选择,旁路表示可选,循环表示重复。点击带下划线的参数可打开对应规则。
SET SESSION AUTHORIZATION · 语法 2
SET SESSION AUTHORIZATION · 语法 3
版本定义 PG 18
SET [ SESSION | LOCAL ] SESSION AUTHORIZATION user_name SET [ SESSION | LOCAL ] SESSION AUTHORIZATION DEFAULT RESET SESSION AUTHORIZATION
描述
这个命令将当前 SQL 会话的会话用户标识符和当前用户标识符设置为 user_name。用户名可以写成一个标识符或者一个字符串字面量。例如,可以使用这个命令临时变为一个非特权用户,之后再切换回超级用户。
会话用户标识符初始时被设置为客户端提供的(可能已认证的)用户名。当前用户标识符通常与会话用户标识符相同,但可能在 SECURITY DEFINER函数和类似机制的上下文中临时更改;它也可以通过SET ROLE更改。当前用户标识符用于权限检查。
只有当初始会话用户(即已认证用户)具有超级用户权限时,才能更改会话用户标识符。否则,只有当该命令指定的是已认证用户名时,才会被接受。
SESSION和LOCAL修饰符的作用与常规的 SET命令相同。
DEFAULT和RESET形式会将会话用户标识符和当前用户标识符重置为最初已认证的用户名。这些形式可以由任何用户执行。
注解
SET SESSION AUTHORIZATION不能在一个 SECURITY DEFINER函数中使用。
示例
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 标准允许在字面值user_name的位置上使用某些其他表达式,但这些选项在实践中并不重要。PostgreSQL允许使用标识符语法("),而 SQL 标准不允许。SQL 不允许在事务中使用这个命令;PostgreSQL并不做此限制,因为没有理由这样做。username"SESSION和LOCAL修饰符以及RESET语法都是PostgreSQL扩展。
标准把执行这个命令所需的权限留给实现定义。
另见
SET ROLE比较版本
来源引用
定义来源
center · PostgreSQL 18 · a709ab85
正文语言: zh-Hans · 1b5ca64c