S dědičností jak zmínil @Denis, bylo by to velmi jednoduché. Funguje také pro Postgres 8.4. Nezapomeňte zvážit omezení .
V podstatě byste měli hlavní tabulku, předpokládám, že v hlavním schématu:
CREATE TABLE master.product (title text);
A všechny ostatní tabulky v různých schématech dědí z něj, případně přidáním dalších lokálních sloupců:
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);
atd.
Tabulky nemusí mít stejný název nebo schéma.
Poté můžete dotazovat se na všechny tabulky na jeden zátah:
SELECT title, tableoid::regclass::text AS source
FROM master.product
WHERE title ILIKE '%test%';
tableoid::regclass::text
?
To je praktický způsob, jak sdělit zdroj každého řádku. Podrobnosti:
- Zjistěte, které schéma na základě hodnot tabulky
SQL Fiddle.