GET_PRIVILEGES_DESCRIPTION
返回当前用户对对象具有的有效权限,包括显式权限、隐式权限、继承的权限以及基于用户的权限。
因为此元函数仅返回有效权限,因此 GET_PRIVILEGES_DESCRIPTION 将只返回完全满足先决条件的权限。有关常见操作的先决条件列表,请参阅常用数据库操作所需的权限。
例如,用户必须具有以下权限才能查询表:
-
架构: USAGE
-
表: SELECT
如果用户 Brooke 对表 s1.t1
具有 SELECT 权限,但缺少对架构 s1
的 USAGE 权限,则 Brooke 将无法查询该表,且 GET_PRIVILEGES_DESCRIPTION 不会返回该表的 SELECT 权限。
注意
如果在数据库级别禁用权限继承,则不会显示所继承的权限。这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变语法
GET_PRIVILEGES_DESCRIPTION( 'type', '[[database.]schema.]name' );
参数
-
类型
- 指定对象类型,为以下之一:
-
database
-
table
-
schema
-
view
-
sequence
-
model
-
library
-
resource pool
-
-
[database.]schema
- 指定数据库和架构,默认情况下分别为当前数据库和
public
。 - name
- 目标对象的名称
特权
无
示例
在以下示例中,用户 Glenn 设置了 REPORTER 角色,并希望检查他对架构 s1
和表 s1.articles
的有效权限。
-
表
s1.articles
从其架构 (s1
) 继承权限。 -
REPORTER 角色具有以下权限:
-
对架构的 SELECT 权限
s1
-
对表的 INSERT WITH GRANT OPTION 权限
s1.articles
-
-
用户 Glenn 具有以下权限:
-
对架构
s1
的 UPDATE 和 USAGE 权限。 -
对表
s1.articles
的 DELETE 权限。
-
GET_PRIVILEGES_DESCRIPTION 返回 Glenn 对架构 s1
的以下有效权限:
=> SELECT GET_PRIVILEGES_DESCRIPTION('schema', 's1');
GET_PRIVILEGES_DESCRIPTION
--------------------------------
SELECT, UPDATE, USAGE
(1 row)
GET_PRIVILEGES_DESCRIPTION 返回 Glenn 对表 s1.articles
的以下有效权限:
=> SELECT GET_PRIVILEGES_DESCRIPTION('table', 's1.articles');
GET_PRIVILEGES_DESCRIPTION
--------------------------------
INSERT*, SELECT, UPDATE, DELETE
(1 row)