sql >> Database >  >> RDS >> PostgreSQL

Selecteer (haal) alle records van meerdere schema's op met Postgres

Met erfenis zoals @Denis al zei, dit zou heel eenvoudig zijn. Werkt ook voor Postgres 8.4. Houd rekening met de beperkingen .

In principe zou je een hoofdtabel hebben, ik veronderstel in een hoofdschema:

CREATE TABLE master.product (title text);

En alle andere tabellen in verschillende schema's erven daaruit, mogelijk meer lokale kolommen toevoegend:

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

enz.

De tabellen hoeven niet dezelfde naam of hetzelfde schema te hebben.
Vervolgens kunt u alle tabellen opvragen in één klap:

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

tableoid::regclass::text ?
Dat is een handige manier om de bron van elke rij te vertellen. Details:

  • Ontdek welk schema op basis van tabelwaarden

SQL Fiddle.



  1. Interval aan tijdstempel toevoegen met Ecto Fragments

  2. PostgreSQL-replicatie voor noodherstel

  3. Hoe invoegen in dezelfde tabel in MySQL?

  4. Een tabelkolom hernoemen in Oracle 10g