has_sequence_privilege() 是一个系统函数,用于确定用户是否对指定的序列拥有指定的权限。
has_sequence_privilege() 在 PostgreSQL 9.0 中被添加。
用法
has_sequence_privilege() 有两种形式:
has_sequence_privilege(sequence TEXT 或 OID, privilege TEXT)has_sequence_privilege(user TEXT 或 OID, sequence TEXT 或 OID, privilege TEXT)
可以查询以下权限
用法SELECTUPDATE
变更历史
- PostgreSQL 9.0
- 已添加 (提交 be6bca23)
示例
确定当前用户是否对指定的序列拥有 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
参考资料
- PostgreSQL 文档: 访问权限查询函数
