Как получить список всех объектов? - PostgreSQL - PullRequest
5 голосов
/ 01 октября 2010

Мне нужен список объектов, включенных в db: таблицы, последовательности и т.д. ...


Получение списка таблиц было единственной вещью, которую я смог выяснить.


Есть идеи, что я мог бы использовать, чтобы получить все?

1 Ответ

9 голосов
/ 01 октября 2010

Это можно сделать с помощью таблиц INFORMATION_SCHEMA, а также системного каталога.

http://www.alberton.info/postgresql_meta_info.html

Например,

Список последовательностей

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

Триггеры списка

SELECT trg.tgname AS trigger_name
  FROM pg_trigger trg, pg_class tbl
 WHERE trg.tgrelid = tbl.oid
   AND tbl.relname !~ '^pg_';
-- or
SELECT tgname AS trigger_name
  FROM pg_trigger
 WHERE tgname !~ '^pg_';

-- with INFORMATION_SCHEMA:

SELECT DISTINCT trigger_name
  FROM information_schema.triggers
 WHERE trigger_schema NOT IN
       ('pg_catalog', 'information_schema');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...