PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Sélectionner (récupérer) tous les enregistrements de plusieurs schémas à l'aide de Postgres

Avec héritage comme @Denis l'a mentionné, ce serait très simple. Fonctionne également pour Postgres 8.4. Assurez-vous de tenir compte des limites .

En gros, vous auriez une table maître, je suppose dans un schéma maître :

CREATE TABLE master.product (title text);

Et toutes les autres tables dans divers schémas héritent à partir de celui-ci, en ajoutant éventuellement d'autres colonnes locales :

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);

etc.

Les tables ne doivent pas nécessairement partager le même nom ou schéma.
Ensuite, vous pouvez interroger toutes les tables d'un seul coup :

SELECT title, tableoid::regclass::text AS source
FROM   master.product
WHERE  title ILIKE '%test%';

tableoid::regclass::text ?
C'est un moyen pratique d'indiquer la source de chaque ligne. Détails :

  • Découvrir quel schéma est basé sur des valeurs de table

SQL Fiddle.