has_sequence_privilege()

一个确定用户是否对序列拥有权限的系统函数

has_sequence_privilege() 是一个系统函数,用于确定用户是否对指定的序列拥有指定的权限

has_sequence_privilege()PostgreSQL 9.0 中添加。

用法

has_sequence_privilege() 具有两种形式

  • has_sequence_privilege(sequence TEXT OID, privilege TEXT)
  • has_tablespace_privilege(user TEXT OID, sequence TEXT OID, privilege TEXT)

可以查询以下权限

  • USAGE
  • SELECT
  • UPDATE

变更历史

示例

确定当前用户是否对指定的序列拥有 USAGE 权限

postgres=# SELECT has_sequence_privilege('foo_id_seq', 'USAGE');
 has_sequence_privilege 
------------------------
 t
(1 row)

确定指定的用户是否对指定的序列拥有 SELECT 权限

postgres=# SELECT has_sequence_privilege('someuser', 'foo_id_seq', 'SELECT');
 has_sequence_privilege 
------------------------
 f
(1 row)

查询多个权限

postgres=# SELECT has_sequence_privilege('someuser', 'foo_id_seq', 'SELECT, UPDATE');
 has_sequence_privilege 
------------------------
 f
(1 row)

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

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

尝试为不存在的序列确定权限

postgres=# SELECT has_sequence_privilege('bar_id_seq', 'USAGE');
ERROR:  relation "bar_id_seq" does not exist

分类

序列系统函数用户和角色

反馈

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