has_schema_privilege() 是一个系统函数,用于确定用户是否对指定的 schema 拥有指定的 特权。
has_schema_privilege() 在 PostgreSQL 7.3 中引入。
用法
has_schema_privilege() 有两种形式:
has_schema_privilege(schema TEXT 或 OID, privilege TEXT)has_schema_privilege(user TEXT 或 OID, schema TEXT 或 OID, privilege TEXT)
可以查询以下权限
CREATE用法
变更历史
- PostgreSQL 8.4
- 能够接受逗号分隔的权限类型列表(提交 7449427a)
- PostgreSQL 7.3
- 添加于 (提交 4ab8e690)
示例
确定当前用户是否对指定的 schema 拥有 USAGE 特权
postgres=# SELECT has_schema_privilege('public', 'USAGE');
has_schema_privilege
----------------------
t
(1 row)
确定指定用户是否对指定的 schema 拥有 USAGE 特权
postgres=# SELECT has_schema_privilege('someuser', 'foo', 'USAGE');
has_schema_privilege
----------------------
f
(1 row)
尝试确定此对象类型不受识别的权限
postgres=# SELECT has_schema_privilege('public', 'DELETE');
ERROR: unrecognized privilege type: "DELETE"
尝试确定不存在函数的特权
postgres=# SELECT has_schema_privilege('foo', 'USAGE');
ERROR: schema "foo" does not exist
参考资料
- PostgreSQL 文档: 访问权限查询函数
