PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Seleziona (recupera) tutti i record da più schemi utilizzando Postgres

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.