pg_get_acl() 是一个系统函数,用于返回数据库对象的访问控制列表 (ACL)。
pg_get_acl() 函数已在 PostgreSQL 18 中添加。
用法
pg_get_acl (classidoid,objidoid,objsubidinteger) →aclitem[]
如果对象没有子对象 ID,则返回 0。
如果找不到匹配的对象,则返回 NULL。
变更历史
- PostgreSQL 18
- 添加(初始提交 4564f1ce)
示例
pg_get_acl() 的基本用法示例
postgres=# CREATE TABLE foo (id INT);
CREATE TABLE
postgres=# CREATE ROLE bar;
CREATE ROLE
postgres=# GRANT SELECT ON foo TO bar;
GRANT
postgres=# CREATE ROLE baz;
CREATE ROLE
postgres=# GRANT UPDATE ON foo TO baz;
GRANT
postgres=# SELECT unnest(pg_get_acl('pg_class'::regclass, 'foo'::regclass, 0));
unnest
----------------------------
postgres=arwdDxtm/postgres
bar=r/postgres
baz=w/postgres
(3 rows)
如果找不到对象,将返回 NULL
postgres=# SELECT pg_get_acl('pg_class'::regclass, 0, 0) IS NULL;
?column?
----------
t
(1 row)
参考资料
- PostgreSQL 文档: 对象信息和寻址函数
