Sql 授予postgres中序列的查询授权

Sql 授予postgres中序列的查询授权,sql,postgresql,sequence,grant,Sql,Postgresql,Sequence,Grant,要查询授予表的授权,我可以使用如下查询: SELECT grantee, privilege_type FROM information_schema.role_table_grants WHERE table_name='mytable' (见我的老问题:) 但是我如何查询划分为序列的授权呢?我已经查看了源代码,但是我找不到任何地方可以通过信息模式表公开序列的ACL。(不过,我可能错过了一些东西。) PostgreSQL确实公开了系统目录pg_类中序列的ACL SELECT relnam

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

SELECT grantee, privilege_type 
FROM information_schema.role_table_grants 
WHERE table_name='mytable'
(见我的老问题:)


但是我如何查询划分为序列的授权呢?

我已经查看了源代码,但是我找不到任何地方可以通过信息模式表公开序列的ACL。(不过,我可能错过了一些东西。)

PostgreSQL确实公开了系统目录pg_类中序列的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'
);
就信息模式和标准SQL序列而言,PostgreSQL不支持它们

select feature_name, is_supported 
from information_schema.sql_features
where feature_name = 'Sequence generator support';
PostgreSQL在这方面是不合格的,因为它公开了schema.sequences的信息,而没有返回“序列生成器支持”的“是”。(这是一种观察,而不是对PostgreSQL的批评。)

但是,说到这里,我在2003年的SQL标准中也找不到任何公开这些特权的东西。在ROLE_TABLE_GRANTS视图的定义中很容易找到PRIVILEGE_TYPE,但据我所知,标准中的序列没有这样的

GRANT USAGE, SELECT ON SEQUENCE sequence_name TO user_role_name;

如图所示:

谢谢您的回答,但这不是我真正需要的,您需要的可能不存在。信息模式表是在最早的SQL标准中定义的。但序列直到2003年才成为SQL标准的一部分。大多数支持序列的数据库管理系统在标准发布之前都有这种支持,而且大多数都不完全符合标准行为或语法。我只是添加了一些信息,使您想要的看起来更不可能。如果你想亲自查看SQL 2003标准的最新草案,你可以在网上找到。这不是查询序列的授权,而是设置序列。