Dengan warisan seperti yang disebutkan @Denis, ini akan sangat sederhana. Bekerja untuk Postgres 8.4 juga. Pastikan untuk mempertimbangkan batasan .
Pada dasarnya, Anda akan memiliki tabel master, saya kira dalam skema master:
CREATE TABLE master.product (title text);
Dan semua tabel lainnya dalam berbagai skema mewarisi dari itu, mungkin menambahkan lebih banyak kolom lokal:
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);
dll.
Tabel tidak harus memiliki nama atau skema yang sama.
Kemudian Anda dapat mengkueri semua tabel dalam satu gerakan:
SELECT title, tableoid::regclass::text AS source
FROM master.product
WHERE title ILIKE '%test%';
tableoid::regclass::text
?
Itu cara praktis untuk memberi tahu sumber setiap baris. Detail:
- Cari tahu skema mana yang berdasarkan nilai tabel
SQL Fiddle.