has_schema_privilege()
是一个系统函数,用于确定用户是否对指定的 权限 具有指定的模式。
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
USAGE
更改历史记录
- PostgreSQL 8.4
- 能够接受以逗号分隔的权限类型列表 (提交 7449427a)
- PostgreSQL 7.3
- 添加 (提交 4ab8e690)
示例
确定当前用户是否对指定的模式具有 USAGE
权限
postgres=# SELECT has_schema_privilege('public', 'USAGE'); has_schema_privilege ---------------------- t (1 row)
确定指定用户是否对指定的模式具有 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 文档: 访问权限查询函数