1

Postgresで次のシーケンスを作成した場合:

CREATE SEQUENCE test
  INCREMENT 1
  MINVALUE 1
  MAXVALUE 9223372036854775807
  START 1
  CACHE 1;
GRANT ALL ON SEQUENCE test TO testuser;
GRANT SELECT ON SEQUENCE test TO testuser2;

次に、pgAdminでシーケンスを選択し、マウスを右クリックして-> CREATE scriptを実行すると、次のようになります。

CREATE SEQUENCE test
  INCREMENT 1
  MINVALUE 1
  MAXVALUE 9223372036854775807
  START 1
  CACHE 1;
ALTER TABLE test
  OWNER TO testuser;
GRANT ALL ON TABLE test TO testuser;
GRANT SELECT ON TABLE test TO testuser2;

したがって、GRANTステートメントには、「SEQUENCE」ではなく「TABLE」というキーワードが表示されます。

  1. 何故ですか?
  2. pgAdminはどのようにDDL抽出を生成していますか?

この質問は、ここにある他の質問の1つに関連しています
。postgresのシーケンスに付与されたGRANTSのクエリ

4

1 に答える 1

1

PostgreSQLでは、シーケンスは一種のテーブルのようなものです。

カタログpg_classは、テーブルと、列を持つか、それ以外はテーブルに類似している他のほとんどすべてをカタログ化します。これには、インデックス(ただし、pg_indexも参照)、シーケンス、ビュー、複合型、およびTOASTテーブルが含まれます。relkindを参照してください。

システムカタログ(システムテーブル)の1つであるpg_classのPostgreSQLドキュメント

于 2011-09-08T01:27:27.600 に答える