Con eredità come menzionato da @Denis, sarebbe molto semplice. Funziona anche con Postgres 8.4. Assicurati di considerare le limitazioni .
Fondamentalmente, avresti una tabella principale, suppongo in uno schema principale:
CREATE TABLE master.product (title text);
E tutte le altre tabelle in vari schemi ereditano da esso, eventualmente aggiungendo più colonne locali:
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);
ecc.
Non è necessario che le tabelle condividano lo stesso nome o schema.
Quindi puoi interrogare tutte le tabelle in un colpo solo:
SELECT title, tableoid::regclass::text AS source
FROM master.product
WHERE title ILIKE '%test%';
tableoid::regclass::text
?
Questo è un modo pratico per dire l'origine di ogni riga. Dettagli:
- Scopri quale schema in base ai valori della tabella
SQL Fiddle.