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.