継承 @Denisが述べたように、これは非常に簡単です。 Postgres8.4でも動作します。必ず制限を考慮してください 。
基本的に、マスターテーブルがあります。マスタースキーマにあると思います:
CREATE TABLE master.product (title text);
そして、さまざまなスキーマの他のすべてのテーブルは継承 そこから、おそらくローカル列を追加します:
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);
など
テーブルは同じ名前やスキーマを共有する必要はありません。
次に、すべてのテーブルをクエリできます。 一挙に:
SELECT title, tableoid::regclass::text AS source
FROM master.product
WHERE title ILIKE '%test%';
tableoid::regclass::text
?
これは、各行のソースを知るための便利な方法です。詳細:
- テーブルの値に基づいてどのスキーマを見つけるか
SQLフィドル。