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は、「シーケンスジェネレータサポート」に対して「YES」を返さずにinformation_schema.sequencesを公開するため、この点で不適合です。(これは観察であり、PostgreSQLに対する批判ではありません。)

しかし、そうは言っても、2003 SQL標準には、これらの特権を公開しているものは何も見つかりませんでした。ROLE_TABLE_GRANTSビューの定義でPRIVILEGE_TYPEを見つけるのは簡単ですが、私が知る限り、標準のシーケンスにはそのようなものはありません。

于 2011-09-07T22:17:12.820 に答える