postgres选择当前搜索路径中的所有表格?

时间:2011-02-21 05:08:48

标签: postgresql

我需要在当前架构搜索路径中找到所有可见表。我试过了:

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 个答案:

答案 0 :(得分:3)

您可以使用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));

答案 1 :(得分:3)

为此目的提供了pg_*_is_visible()个函数集。以下是使用它们的一种方法:

SELECT * FROM pg_class WHERE relkind IN ('r', 'v') AND pg_table_is_visible(oid);