has_any_column_privilege()
是一个系统函数,用于确定用户是否对表的某一列或多列具有权限。
has_any_column_privilege()
在PostgreSQL 8.4中添加。
用法
has_any_column_privilege ( [user
name
oroid
, ]table
text
oroid
,privilege
text
) →boolean
可以查询以下权限
SELECT
INSERT
UPDATE
REFERENCES
请注意,当将表名作为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文档: 访问权限查询函数