has_type_privilege()
是一个系统函数,用于确定用户是否对特定数据类型拥有权限。
在PostgreSQL 9.2 中添加。has_type_privilege()
用法
has_type_privilege()
有两种形式
has_type_privilege(类型 TEXT 或 OID, 权限 TEXT)
has_type_privilege(用户 TEXT 或 OID, 类型 TEXT 或 OID, 权限 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 文档: 访问权限查询函数