sql >> Base de Datos >  >> RDS >> PostgreSQL

Seleccionar (recuperar) todos los registros de múltiples esquemas usando Postgres

Con herencia como mencionó @Denis, esto sería muy simple. También funciona para Postgres 8.4. Asegúrese de considerar las limitaciones .

Básicamente, tendrías una tabla maestra, supongo que en un esquema maestro:

CREATE TABLE master.product (title text);

Y todas las demás tablas en varios esquemas heredan de él, posiblemente agregando más columnas 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.

Las tablas no tienen que compartir el mismo nombre o esquema.
Entonces puede consultar todas las tablas de un solo golpe:

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

tableoid::regclass::text ?
Esa es una forma práctica de saber el origen de cada fila. Detalles:

  • Descubra qué esquema según los valores de la tabla

Violín SQL.