Met erfenis zoals @Denis al zei, dit zou heel eenvoudig zijn. Werkt ook voor Postgres 8.4. Houd rekening met de beperkingen .
In principe zou je een hoofdtabel hebben, ik veronderstel in een hoofdschema:
CREATE TABLE master.product (title text);
En alle andere tabellen in verschillende schema's erven daaruit, mogelijk meer lokale kolommen toevoegend:
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);
enz.
De tabellen hoeven niet dezelfde naam of hetzelfde schema te hebben.
Vervolgens kunt u alle tabellen opvragen in één klap:
SELECT title, tableoid::regclass::text AS source
FROM master.product
WHERE title ILIKE '%test%';
tableoid::regclass::text
?
Dat is een handige manier om de bron van elke rij te vertellen. Details:
- Ontdek welk schema op basis van tabelwaarden
SQL Fiddle.