↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

Wiki / SQL 命令

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 LOCAL SESSION AUTHORIZATION user_name
SET SESSION AUTHORIZATION · 语法 2
SET SESSION LOCAL SESSION AUTHORIZATION DEFAULT
SET SESSION AUTHORIZATION · 语法 3
RESET SESSION AUTHORIZATION

版本定义 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允许使用标识符语法("username"),而 SQL 标准不允许。SQL 不允许在事务中使用这个命令;PostgreSQL并不做此限制,因为没有理由这样做。SESSION和LOCAL修饰符以及RESET语法都是PostgreSQL扩展。

标准把执行这个命令所需的权限留给实现定义。

另见

SET ROLE

比较版本

来源引用

完整定义与证据 JSON

定义来源

center · PostgreSQL 18 · a709ab85

正文语言: zh-Hans · 1b5ca64c