Es muy simple, encontrará todo aquí Documentación: 9.2: Particionamiento
Por cierto, los pasos son [hago una partición en la columna A]:
1) crear una tabla normal (esa es la tabla maestra que llamaré es master_tab);
crear tabla mastertab (a int, b varchar);
2) crea las tablas esclavas con:
crear tabla slavetab001 () HEREDAS (mastertab);
crear tabla slavetab002 () HEREDAS (mastertab);
…
crear tabla slavetab060 () HEREDAS (mastertab);
3) es mejor pensar en las restricciones para preservar la coherencia lógica de la tabla:
alter table slavetab001 agregar restricción CK CHECK (a entre 0 y 100000);
alter table slavetab002 agregar restricción CK CHECK (a entre 100001 y 200000);
…
4) crea la función de disparo (procedimiento):
CREAR O REEMPLAZAR LA FUNCIÓN mastertab_trigger ()
DEVOLUCIONA EL GATILLO COMO
$$
EMPEZAR
SI (NUEVO.a> = 0 Y NUEVO.a <100001) ENTONCES
INSERTAR EN VALORES slavetab001 (NUEVO. *);
ELSIF (NUEVO.a> = 100001 Y NUEVO.a <200001) ENTONCES
INSERTAR EN VALORES slavetab002 (NUEVO. *);
MÁS
AUMENTAR EXCEPCIÓN ‘Columna A de Mastertab fuera de rango’;
TERMINARA SI;
DEVOLUCIÓN NULO;
FINAL;
$$ IDIOMA plpgsql;
5) crea el disparador:
CREATE TRIGGER mastertab_trigger ANTES DE INSERTAR EN mastertab PARA CADA PROCEDIMIENTO DE EJECUCIÓN DE FILAS mastertab_trigger ();
- ¿Por qué estoy enamorado de mi profesor de matemáticas?
- Fui a quitar una luz del zócalo mientras estaba encendida y se rompió y me electrocuté, ¿por qué no me dolió o por qué no me morí?
- Mi apellido es Bolivar. Me han dicho que proviene del pueblo vasco. ¿Qué puedo aprender sobre mi nombre?
- Mi mejor amigo dijo que la gente en Japón odia a los extranjeros y que no me aceptarían allí. Ella ha estado tratando de disuadirme de ir a Japón a enseñar inglés por un tiempo, ¿está siendo honesta? ¿Qué tengo que hacer?
- Dejé la escuela secundaria y tengo 8 años de experiencia en ingeniería en Google, Apple y Microsoft. ¿Puedo obtener un doctorado sin experiencia universitaria?
6) prueba si está funcionando
prueba = # insertar en valores mastertab (a, b) (1, ‘dhdhd’);
INSERTAR 0 0
prueba = # insertar en valores mastertab (a, b) (100000, ‘dhdhd’);
INSERTAR 0 0
prueba = # insertar en valores mastertab (a, b) (100001, ‘prueba2’);
INSERTAR 0 0
## Veo todos los registros en mastertab
prueba = # seleccionar * de mastertab;
a | si
——– + ——-
100001 | prueba2
1 | dhdhd
100000 | dhdhd
(3 filas)
## Veo el registro correctamente en las pestañas de esclavos:
test = # select * from slavetab001;
a | si
——– + ——-
1 | dhdhd
100000 | dhdhd
(2 filas)
test = # select * from slavetab002;
a | si
——– + ——-
100001 | prueba2
(1 fila)