Med arv som @Denis nævnte, ville dette være meget enkelt. Virker også til Postgres 8.4. Sørg for at overveje begrænsningerne .
Grundlæggende ville du have en mastertabel, formoder jeg i et masterskema:
CREATE TABLE master.product (title text);
Og alle andre tabeller i forskellige skemaer arver fra det, eventuelt tilføje flere lokale kolonner:
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);
osv.
Tabellerne behøver ikke at dele det samme navn eller skema.
Så kan du forespørge alle tabeller i et enkelt hug:
SELECT title, tableoid::regclass::text AS source
FROM master.product
WHERE title ILIKE '%test%';
tableoid::regclass::text
?
Det er en praktisk måde at fortælle kilden til hver række på. Detaljer:
- Find ud af hvilket skema baseret på tabelværdier
SQL Fiddle.