此条目与 PostgreSQL 功能相关,该功能是 PostgreSQL 18 的一部分,预计将于 2025 年底发布。
pg_get_acl()
是一个系统函数,用于返回数据库对象的访问控制列表 (ACL)。
pg_get_acl()
在 PostgreSQL 18 中添加。
用法
pg_get_acl (classid
oid
,objid
oid
,objsubid
integer
) →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 18 文档: 对象信息和寻址函数