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 文档: 访问权限查询函数
