sql >> Databasteknik >  >> RDS >> PostgreSQL

Välj (hämta) alla poster från flera scheman med Postgres

Med arv som @Denis nämnde, detta skulle vara väldigt enkelt. Fungerar för Postgres 8.4 också. Var noga med att överväga begränsningarna .

I grund och botten skulle du ha en huvudtabell, antar jag i ett huvudschema:

CREATE TABLE master.product (title text);

Och alla andra tabeller i olika scheman ärver från den, eventuellt lägga till fler lokala kolumner:

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.

Tabellerna behöver inte dela samma namn eller schema.
Då kan du fråga alla tabeller i ett enda svep:

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

tableoid::regclass::text ?
Det är ett praktiskt sätt att berätta källan för varje rad. Detaljer:

  • Ta reda på vilket schema baserat på tabellvärden

SQL-fiol.



  1. GETUTCDATE() Exempel i SQL Server (T-SQL)

  2. SMALLDATETIMEFROMPARTS() Exempel i SQL Server (T-SQL)

  3. Försök att öppna ett redan stängt objekt sqlitedatabase

  4. Oracle Sequence nextval hoppar nummer fram och tillbaka