我可以在同一个SQL数据库中跨多个模式选择数据吗?



我有一个具有多个模式的数据库。我想在所有以"team"开头的模式中运行SELECT * FROM info

模式不是固定的,这意味着模式是不断添加和删除的,所以我不能在查询中硬编码模式。但我只对以"团队"开头的模式感兴趣。我该怎么做呢?

如果所有表具有相同的结构,则可以编写一个PL/pgSQL函数来完成以下操作:

create function get_info(p_schema_prefix text)
returns table (... column definitions go here ...)
as
$$
declare
l_rec record;
l_sql text;
begin
for l_rec in select table_schema, table_name
from information_schema.tables
where table_name = 'info'
and table_schema like p_schema_prefix||'%'
loop 
l_sql := format('select id, data from %I.%I', l_rec.table_schema, l_rec.table_name);
return query execute l_sql;
end loop;
end;
$$
language plpgsql;

可以这样使用:

select *
from get_info('team')

相关内容

  • 没有找到相关文章