has_function_privilege()

一个判断用户是否拥有函数权限的系统函数

has_function_privilege() 是一个系统函数,用于判断用户是否对指定的函数拥有指定的 权限

has_function_privilege() 添加于 PostgreSQL 7.3

用法

has_function_privilege() 有两种形式:

  • has_function_privilege(function TEXT OID, privilege TEXT)
  • has_function_privilege(user TEXT OID, function TEXT OID, privilege TEXT)

通过 has_function_privilege() 可以查询的唯一权限是:EXECUTE

变更历史

示例

判断当前用户是否对指定函数拥有 EXECUTE 权限。

postgres=# SELECT has_function_privilege('pg_is_in_recovery()', 'EXECUTE');
 has_function_privilege 
------------------------
 t
(1 row)

函数必须指定为 function(...) 的形式,否则将引发错误。

postgres=# SELECT has_function_privilege('pg_is_in_recovery', 'EXECUTE');
ERROR:  expected a left parenthesis

判断指定用户是否对指定函数拥有 EXECUTE 权限。

postgres=# SELECT has_function_privilege('someuser', 'pg_read_file(text)', 'EXECUTE');
 has_function_privilege 
------------------------
 f
(1 row)

尝试确定此对象类型不受识别的权限

postgres=# SELECT has_function_privilege('pg_is_in_recovery()', 'CREATE');
ERROR:  unrecognized privilege type: "CREATE"

尝试判断一个不存在的函数的权限。

postgres=# SELECT has_function_privilege('somefunction()', 'EXECUTE');
ERROR:  function "somefunction()" does not exist

分类

函数和过程, 系统函数, 用户和角色

反馈

请在此处提交关于 "has_function_privilege()" 的任何评论、建议或更正。 在此处