PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Selecione (recupere) todos os registros de vários esquemas usando o Postgres


Com herança como @Denis mencionou, isso seria muito simples. Funciona para o Postgres 8.4 também. Certifique-se de considerar as limitações .

Basicamente, você teria uma tabela mestre, suponho em um esquema mestre:
CREATE TABLE master.product (title text);

E todas as outras tabelas em vários esquemas herdam a partir dele, possivelmente adicionando mais colunas locais:
CREATE TABLE a.product (product_id serial PRIMARY KEY, col2 text)
INHERITS (master.product);

CREATE TABLE b.product (product_id serial PRIMARY KEY, col2 text, col3 text)
INHERITS (master.product);

etc.

As tabelas não precisam compartilhar o mesmo nome ou esquema.
Então você pode consultar todas as tabelas de uma só vez:
SELECT title, tableoid::regclass::text AS source
FROM   master.product
WHERE  title ILIKE '%test%';

tableoid::regclass::text ?
Essa é uma maneira prática de informar a origem de cada linha. Detalhes:
  • Descubra qual esquema com base nos valores da tabela

SQL Fiddle.