has_server_privilege() 是一个系统函数,用于确定用户是否对指定的外部服务器拥有指定的 权限。
has_server_privilege() 添加于 PostgreSQL 8.4。
用法
has_server_privilege(servertextoroid,privilegetext)
has_server_privilege(usertextoroid,servertextoroid,privilegetext)
可以使用 has_server_privilege() 查询的唯一权限是:USAGE。
变更历史
- PostgreSQL 8.4
- 添加 (提交 cae565e5)
示例
以下示例假定一个 FDW 配置如下:
postgres=# \des
List of foreign servers
Name | Owner | Foreign-data wrapper
--------+----------+----------------------
pg_fdw | postgres | postgres_fdw
(1 row)
确定当前用户是否对指定的外部服务器拥有 USAGE 权限
postgres=# SELECT has_server_privilege('pg_fdw', 'USAGE');
has_server_privilege
----------------------
t
(1 row)
确定指定用户是否对指定的外部服务器拥有 USAGE 权限
postgres=# SELECT has_server_privilege('foo', 'pg_fdw', 'USAGE');
has_server_privilege
----------------------
f
(1 row)
尝试确定此对象类型不受识别的权限
postgres=# SELECT has_server_privilege('pg_fdw', 'UPDATE');
ERROR: unrecognized privilege type: "UPDATE"
尝试确定一个不存在的外部服务器的权限
postgres=# SELECT has_server_privilege('microfiche_archive_2nd_floor', 'USAGE');
ERROR: server "microfiche_archive_2nd_floor" does not exist
参考资料
- PostgreSQL 文档: 访问权限查询函数
