has_tablespace_privilege()
是一个系统函数,用于确定用户是否对指定的 权限 拥有指定的 表空间。
has_tablespace_privilege()
在 PostgreSQL 8.0 中添加。
用法
has_tablespace_privilege()
有两种形式
has_tablespace_privilege(tablespace TEXT 或 OID, privilege TEXT)
has_tablespace_privilege(user TEXT 或 OID, tablespace TEXT 或 OID, privilege TEXT)
唯一可以使用 has_tablespace_privilege()
查询的权限是:CREATE
。
更改历史记录
- PostgreSQL 8.0
- 添加 (提交 e47cbb3b)
示例
确定当前用户是否对指定的表空间具有 CREATE
权限
postgres=# SELECT has_tablespace_privilege('tblspc_1', 'CREATE'); has_tablespace_privilege -------------------------- t (1 row)
确定指定的用户是否对指定的表空间具有 CREATE
权限
postgres=# SELECT has_tablespace_privilege('foo', 'tblspc_2', 'CREATE'); has_tablespace_privilege -------------------------- f (1 row)
除了 CREATE
之外的其他权限不被识别
postgres=# SELECT has_tablespace_privilege('tblspc_1', 'DELETE'); ERROR: unrecognized privilege type: "DELETE"
尝试确定不存在的表空间的权限
postgres=# SELECT has_tablespace_privilege('tblspc_foo', 'CREATE'); ERROR: tablespace "tblspc_foo" does not exist
参考文献
- PostgreSQL 文档: 访问权限查询函数