sql - 查询 GRANTS 授予 postgres 中的序列

标签 sql postgresql sequence sql-grant

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

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

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

但是我如何查询磨碎的序列的 GRANTS?

最佳答案

我查看了源代码,但找不到任何通过 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 而没有为“序列生成器支持”返回"is"。 (这是一个观察,而不是对 PostgreSQL 的批评。)

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

关于sql - 查询 GRANTS 授予 postgres 中的序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7337662/

相关文章:

list - 从 Kotlin 数字列表中获得一对数字

python - 对日期序列进行排序的最 pythonic 方法是什么?

mysql - MySQL 中何时使用单引号、双引号和反引号

Java和SQL查询: slowness

python - 执行 makemigrations 后,结果中缺少一些项目

sql - 使用 where 子句在 SQL 中划分

postgresql - 修改 COALESCE 函数以考虑结果的两个相邻值

node.js - 如何按顺序运行多个 Node 流?

mysql - Like 和 '=' 等于 sql - mysql 集群中的操作符性能

sql - 合并具有不同列的 PostgreSQL 查询