1

我创建了以下查询:

    select 
    is_tables.table_name 
from information_schema.tables is_tables 
join pg_tables 
    on is_tables.table_name=pg_tables.tablename 
where 
    is_tables.table_catalog='<mydatabase>' 
    and is_tables.table_schema<>'information_schema' 
    and is_tables.table_schema<>'pg_catalog' 
    and pg_tables.tableowner='<myuser>';

我假设没有数据库供应商独立的查询方式。这是在 PostgreSQL 中实现我想要的最简单/最短的 SQL 查询吗?

4

1 回答 1

1

我觉得你很接近。对象所有者似乎没有出现在 information_schema 视图中,尽管我可能忽略了它。

select is_tables.table_schema,
       is_tables.table_name 
from information_schema.tables is_tables 
inner join pg_tables 
        on is_tables.table_name = pg_tables.tablename 
       and is_tables.table_schema = pg_tables.schemaname
where is_tables.table_catalog = '<mydatabase>' 
  and is_tables.table_schema <> 'information_schema' 
  and is_tables.table_schema <> 'pg_catalog' 
  and pg_tables.tableowner = '<myuser>';

您需要同时加入表名和模式名。表名在模式中是唯一的;它们在数据库中不是唯一的。

于 2013-09-18T01:22:05.140 回答