PostgreSQL 教程: CURRENT_USER 函数

七月 14, 2024

摘要:在本教程中,您将学习如何使用 PostgreSQL 的CURRENT_USER函数,返回当前登录的数据库用户的名称。

目录

PostgreSQL CURRENT_USER 函数介绍

PostgreSQL CURRENT_USER是一个函数,用于返回当前登录的数据库用户的名称。

下面是CURRENT_USER函数的语法:

CURRENT_USER

该函数返回会话中当前有效用户的名称。

换言之,如果使用SET ROLE语句将当前用户的角色更改为新用户的角色,则CURRENT_USER将反映新角色。

在 PostgreSQL 中,具有LOGIN属性的角色代表一个用户。因此,我们可以互换地使用术语“角色”和“用户”。

要获取连接到会话的原始用户,请使用SESSION_USER函数。

PostgreSQL CURRENT_USER 函数示例

首先,在 Windows 上打开命令提示符,或在类 Unix 系统上打开终端,并使用 psql 连接到 PostgreSQL 服务器:

psql -U postgres

第二步,使用CURRENT_USER函数获取当前登录的用户:

SELECT CURRENT_USER;

输出:

 current_user
--------------
 postgres
(1 row)

第三步,创建一个新角色,名为bob

CREATE ROLE bob WITH LOGIN PASSWORD 'SecurePass1';

第四步,将当前用户的角色修改为bob

SET ROLE bob;

第五步,执行CURRENT_USER函数:

SELECT CURRENT_USER;

它返回的是bob

 current_user
--------------
 bob
(1 row)

第六步,使用SESSION_USER函数找回连接到会话的原始用户:

SELECT SESSION_USER;

输出:

 session_user
--------------
 postgres
(1 row)

SESSION_USER函数返回的是postgres,而不是bob

总结

  • 使用CURRENT_USER函数返回会话中的当前有效用户。
  • 使用SESSION_USER函数返回连接到会话的原始用户。