has_sequence_privilege()
是一个系统函数,用于确定用户是否对指定的权限拥有指定的序列。
has_sequence_privilege()
在 PostgreSQL 9.0 中添加。
用法
has_sequence_privilege()
具有两种形式
has_sequence_privilege(序列 TEXT 或 OID, 权限 TEXT)
has_tablespace_privilege(用户 TEXT 或 OID, 序列 TEXT 或 OID, 权限 TEXT)
可以查询以下权限
USAGE
SELECT
UPDATE
变更历史
- 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 文档: 访问权限查询函数