13

要查询授予表的 GRANTS,我可以使用如下查询:

SELECT grantee, privilege_type 
FROM information_schema.role_table_grants 
WHERE table_name='mytable'

(在这里查看我的旧问题:Query grants for a table in postgres

但是我如何查询 GRANTS 磨成一个序列?

4

2 回答 2

14

我查看了源代码,但找不到任何通过 information_schema 表公开序列 ACL 的地方。(不过,我可能错过了一些东西。)

PostgreSQL 确实公开了系统目录 pg_class 中序列的 ​​ACL。

SELECT relname, relacl
FROM pg_class
WHERE relkind = 'S'
  AND relacl is not null
  AND relnamespace IN (
      SELECT oid
      FROM pg_namespace
      WHERE nspname NOT LIKE 'pg_%'
        AND nspname != 'information_schema'
);

就 information_schema 和标准 SQL 序列而言,PostgreSQL 不支持它们。

select feature_name, is_supported 
from information_schema.sql_features
where feature_name = 'Sequence generator support';

PostgreSQL 在这方面是不合格的,因为它公开了 information_schema.sequences 而没有为“序列生成器支持”返回“YES”。(这是一个观察,而不是对 PostgreSQL 的批评。)

但是,说了这么多,我在 2003 年的 SQL 标准中也找不到任何暴露这些特权的东西。在 ROLE_TABLE_GRANTS 视图的定义中很容易找到 PRIVILEGE_TYPE,但据我所知,标准中的序列没有类似的东西。

于 2011-09-07T22:17:12.820 回答
-2
GRANT USAGE, SELECT ON SEQUENCE sequence_name TO user_role_name;

如此处所示:https ://www.postgresql.org/docs/current/sql-grant.html

于 2019-08-13T09:12:41.507 回答