has_type_privilege() 是一个系统函数,用于确定用户是否拥有特定数据类型的权限。
在 PostgreSQL 9.2 中被添加。has_type_privilege()
用法
has_type_privilege() 有两种形式
has_type_privilege(type TEXT 或 OID, privilege TEXT)has_type_privilege(user TEXT 或 OID, type TEXT 或 OID, privilege TEXT)
使用 has_type_privilege() 可以查询的唯一权限是:USAGE。
类型和权限的规范不区分大小写。
变更历史
- PostgreSQL 9.2
- 添加于 (提交 72920557)
示例
确定当前用户是否拥有 TEXT 数据类型的 USAGE 权限
postgres=# SELECT has_type_privilege('TEXT', 'USAGE');
has_type_privilege
--------------------
t
(1 row)
确定指定用户是否拥有 VARCHAR 数据类型的 USAGE 权限
postgres=# SELECT has_type_privilege('someuser', 'character varying', 'usage');
has_type_privilege
--------------------
t
(1 row)
尝试确定此对象类型不受识别的权限
postgres=# SELECT has_type_privilege('TEXT', 'UPDATE');
ERROR: unrecognized privilege type: "UPDATE"
尝试确定不存在的数据类型的权限
postgres=# SELECT has_type_privilege('MEGABLOB', 'UPDATE');
ERROR: type "megablob" does not exist
参考资料
- PostgreSQL 文档: 访问权限查询函数
