Postgres выбрать все таблицы в текущем пути поиска? - PullRequest
1 голос
/ 21 февраля 2011

Мне нужно найти все видимые таблицы в моем текущем пути поиска схемы. Я попробовал:

SELECT *
FROM pg_tables
AND schemaname IN (SHOW search_path)

но это ошибки с:

PGError: ERROR: syntax error at or near "search_path" LINE 3: AND schemaname IN (SHOW search_path)

Ответы [ 2 ]

3 голосов
/ 21 февраля 2011

Для этой цели предусмотрен набор функций pg_*_is_visible(). Вот один из способов их использования:

SELECT * FROM pg_class WHERE relkind IN ('r', 'v') AND pg_table_is_visible(oid);
3 голосов
/ 21 февраля 2011

Вы можете получить текущие схемы, используя функцию CURRENT_SCHEMAS(). Он разрешит любые ссылки в пути поиска для вас (например, $user)

 SELECT * FROM pg_tables WHERE schemaname = ANY (CURRENT_SCHEMAS(false));

Вы также можете использовать более стандартную information_schema псевдошхему.

 SELECT * FROM information_schema.tables WHERE table_schema = ANY (CURRENT_SCHEMAS(false));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...