aclexplode()

一个将 aclitem 数组作为行集返回的函数

aclexplode() 是一个系统函数,它将提供的 aclitem 数组作为行集返回。

aclexplode()PostgreSQL 9.0 中添加。

用法

aclexplode ( aclitem[] )
        → setof record ( grantor oid, grantee oid, privilege_type text, is_grantable boolean )

每个授予的权限都作为单独的一行返回。

如果 grantee 是伪角色 PUBLIC,则在 grantee 列中以 0 表示。

变更历史

示例

aclexplode() 的基本用法示例

postgres=# CREATE TABLE bar (id INT);
CREATE TABLE

postgres=# GRANT SELECT ON bar TO foo;
GRANT

postgres=# SELECT (aclexplode(relacl)).* FROM pg_class WHERE relname='bar';
 grantor | grantee | privilege_type | is_grantable 
---------+---------+----------------+--------------
      10 |      10 | INSERT         | f
      10 |      10 | SELECT         | f
      10 |      10 | UPDATE         | f
      10 |      10 | DELETE         | f
      10 |      10 | TRUNCATE       | f
      10 |      10 | REFERENCES     | f
      10 |      10 | TRIGGER        | f
      10 |      10 | MAINTAIN       | f
      10 |   16384 | SELECT         | f
(9 rows)

确定哪些数据库授予了 PUBLIC 角色

postgres=# SELECT datname
             FROM pg_database
            WHERE 0::oid = ANY(SELECT (aclexplode(datacl)).grantee);
  datname  
-----------
 template1
 template0
(2 rows)

分类

系统函数用户和角色

另请参阅

makeaclitem(),acldefault()

反馈

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