has_table_privilege()

一个确定用户是否对表具有权限的系统函数

has_table_privilege() 是一个系统函数,用于确定用户是否对指定的表具有指定的权限

has_table_privilege()PostgreSQL 7.2 中添加。

用法

has_table_privilege() 有两种形式

  • has_table_privilege(表名 TEXT OID, 权限 TEXT)
  • has_table_privilege(用户名 TEXT OID, 表名 TEXT OID, 权限 TEXT)

可以查询以下权限

  • SELECT
  • INSERT
  • UPDATE
  • DELETE
  • REFERENCES
  • TRIGGER
  • TRUNCATE

更改历史记录

示例

确定当前用户是否对指定表具有 UPDATE 权限

postgres=# SELECT has_table_privilege('foo', 'UPDATE');
 has_table_privilege 
---------------------
 t
(1 row)

确定指定用户是否对指定表具有 SELECT 权限

postgres=# SELECT has_table_privilege('someuser', 'foo', 'SELECT');
 has_table_privilege 
---------------------
 f
(1 row)

查询多个权限

postgres=# SELECT has_table_privilege('foo', 'INSERT, DELETE, UPDATE WITH GRANT OPTION');
 has_table_privilege 
---------------------
 t
(1 row)

尝试为该对象类型确定未识别的权限

postgres=# SELECT has_table_privilege('foo', 'CREATE');
ERROR:  unrecognized privilege type: "CREATE"

尝试为不存在的表确定权限

postgres=# SELECT has_table_privilege('bar', 'DELETE');
ERROR:  relation "bar" does not exist

分类

系统函数用户和角色

反馈

提交任何关于 "has_table_privilege()" 的评论、建议或更正 此处