has_any_column_privilege() 是一个系统函数,用于确定用户是否对表的一个或多个列具有权限。
has_any_column_privilege() 函数于PostgreSQL 8.4 中引入。
用法
has_any_column_privilege ( [usernameoroid, ]tabletextoroid,privilegetext) →boolean
可以查询以下权限
SELECTINSERTUPDATEREFERENCES
请注意,当提供表的OID作为参数时,如果找不到匹配的对象,该函数将返回NULL。如果以字符串形式提供表名,如果找不到匹配的对象,则会引发错误。
变更历史
- PostgreSQL 8.4
- 添加于 (提交 7449427a)
示例
确定当前用户是否对指定表中的任何列具有SELECT权限
postgres=# SELECT has_any_column_privilege('foo', 'SELECT');
has_any_column_privilege
--------------------------
t
(1 row)
确定指定用户是否对指定表中的任何列具有UPDATE权限
postgres=# SELECT has_any_column_privilege('someuser', 'foo', 'UPDATE');
has_any_column_privilege
--------------------------
f
(1 row)
尝试确定此对象类型不受识别的权限
postgres=# SELECT has_any_column_privilege('foo', 'USAGE');
ERROR: unrecognized privilege type: "USAGE"
尝试确定不存在的表的权限
postgres=# SELECT has_any_column_privilege('bar', 'REFERENCES');
ERROR: relation "bar" does not exist
尝试确定一个不存在的OID的权限
postgres=# SELECT has_any_column_privilege(9999, 'SELECT'); has_any_column_privilege -------------------------- (1 row)
参考资料
- PostgreSQL 文档: 访问权限查询函数
