Re: [MASSMAIL]duda con particionado de tablas

From: Anthony Sotolongo <asotolongo(at)gmail(dot)com>
To: Esneiker Enriquez Cabrera <eenriquez(at)cav(dot)desoft(dot)cu>, 'POSTGRES' <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: [MASSMAIL]duda con particionado de tablas
Date: 2015-02-20 17:26:03
Message-ID: 54E76E2B.7000408@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Consultaste eso que te comenté?
select * from only historico_master.estudiante

saludos
On 20/02/15 13:41, Esneiker Enriquez Cabrera wrote:
>
> Las reglas están definidas de la forma:
>
> CREATE OR REPLACE RULE estudiante_2015_insert_rule AS
>
> ON INSERT TO historico_master.estudiante
>
> WHERE new.anno = 2015 DO INSTEAD INSERT INTO
> historico_2015.estudiante_2015 (id, nombre, anno)
>
> VALUES (new.id, new.nombre, new.anno);
>
> CREATE OR REPLACE RULE estudiante_2016_insert_rule AS
>
> ON INSERT TO historico_master.estudiante
>
> WHERE new.anno = 2016 DO INSTEAD INSERT INTO
> historico_2016.estudiante_2016 (id, nombre, anno)
>
> VALUES (new.id, new.nombre, new.anno);
>
> Saludos,
>
> */Ing. Esneiker Enriquez Cabrera/**
> **Esp. B en Ciencias Informáticas*
>
> Desoft en Ciego de Ávila. Joaquín de Aguero esq. Calle 2. Ciego de
> Ávila. Cuba.
> *Telf.:* 53 33 22 8971, *email.:* eenriquez(at)cav(dot)desoft(dot)cu
> <mailto:eenriquez(at)cav(dot)desoft(dot)cu>
>
> *De:*pgsql-es-ayuda-owner(at)postgresql(dot)org
> [mailto:pgsql-es-ayuda-owner(at)postgresql(dot)org] *En nombre de *Anthony
> Sotolongo
> *Enviado el:* viernes, 20 de febrero de 2015 11:33
> *Para:* Marcos Ortiz; Esneiker Enriquez Cabrera; 'POSTGRES'
> *Asunto:* Re: [MASSMAIL][pgsql-es-ayuda] duda con particionado de tablas
>
> Hola Eskeiner me sumo a lo que sugiere marcos, a lo mejor estas
> definiendo mal la regla. Una cosa que debes saber es que si consultas
> la tabla padre vas a ver los elementos del hijo, pero no quiere decir
> que estén en el padre fisicamente, puedes probar haciendo un select *
> from only tabla_padre y si esta implementada la herencia y el
> redireccionamiento de los registros correctamente, la tabla padre va a
> estar vacía, los registros van a estar en los hijos solamente.
>
>
> saludos
>
> On 20/02/15 12:55, Marcos Ortiz wrote:
>
>
> On 20/02/15 10:18, Esneiker Enriquez Cabrera wrote:
>
> Hola amigos.
>
> Estoy implementando un ejemplo de partición de tablas en
> postgres pero me he encontrado con un problemita. Describo mi
> escenario.
>
> Estoy usando postgres 8.4 y tengo un esquema que se llama
> master, en este esquema tengo una tabla que sería mi tabla
> padre. Tengo otro esquema que se llama histórico 2015 que
> tiene una tabla que hereda de la tabla del esquema master.
> Tengo creada una regla que me inserta los valores de la tabla
> padre a la hija según la condición que le especifico. Esto
> funciona correctamente, pero el problema está en que me
> inserta el registro en la tabla padre y en la tabla hija,
> mientras que en los documentos que solo se debe insertar en la
> tabla hija. Si elimino el registro de alguna de estas tablas
> lo elimina de la otra.
>
> Alguien me podría dar alguna sugerencia?
>
> Muchas gracias.
>
> Bueno, el problema debe estar en la regla que estás definiendo.
> Generalmente esto se hace con un Trigger de tipo Before, para que
> se ejecute antes del INSERT en la tabla master. Aquí te dejo el
> ejemplo de un trigger de este tipo y su función correspondiente.
> La tabla master es impressions_by_day, y cada partición tiene dos
> meses de datos:
>
> CREATE TRIGGER insert_impressions_by_day_trigger
> BEFORE INSERT ON impressions_by_day
> FOR EACH ROW EXECUTE PROCEDURE
> impressions_by_day_insert_trigger();
>
>
> CREATE OR REPLACE FUNCTION impressions_by_day_insert_trigger()
> RETURNS TRIGGER AS $$
> BEGIN
> IF ( NEW.day >= DATE '2009-01-01' AND NEW.day < DATE
> '2009-03-01' ) THEN
> INSERT INTO impressions_by_day_y2009m1ms2 VALUES (NEW.*);
> ELSIF ( NEW.day >= DATE '2009-03-01' AND NEW.day < DATE
> '2009-05-01' ) THEN
> INSERT INTO impressions_by_day_y2009m3ms2 VALUES (NEW.*);
> ELSIF ( NEW.day >= DATE '2009-05-01' AND NEW.day < DATE
> '2009-07-01' ) THEN
> INSERT INTO impressions_by_day_y2009m5ms2 VALUES (NEW.*);
> ELSIF ( NEW.day >= DATE '2009-07-01' AND NEW.day < DATE
> '2009-09-01' ) THEN
> INSERT INTO impressions_by_day_y2009m7ms2 VALUES (NEW.*);
> ELSIF ( NEW.day >= DATE '2009-09-01' AND NEW.day < DATE
> '2009-11-01' ) THEN
> INSERT INTO impressions_by_day_y2009m9ms2 VALUES (NEW.*);
> ELSIF ( NEW.day >= DATE '2009-11-01' AND NEW.day < DATE
> '2010-01-01' ) THEN
> INSERT INTO impressions_by_day_y2009m11ms2 VALUES (NEW.*);
> ELSIF ( NEW.day >= DATE '2010-01-01' AND NEW.day < DATE
> '2010-03-01' ) THEN
> INSERT INTO impressions_by_day_y2010m1ms2 VALUES (NEW.*);
> ELSIF ( NEW.day >= DATE '2010-03-01' AND NEW.day < DATE
> '2010-05-01' ) THEN
> INSERT INTO impressions_by_day_y2010m3ms2 VALUES (NEW.*);
> ELSIF ( NEW.day >= DATE '2010-05-01' AND NEW.day < DATE
> '2010-07-01' ) THEN
> INSERT INTO impressions_by_day_y2010m5ms2 VALUES (NEW.*);
> ELSIF ( NEW.day >= DATE '2010-07-01' AND NEW.day < DATE
> '2010-09-01' ) THEN
> INSERT INTO impressions_by_day_y2010m7ms2 VALUES (NEW.*);
> ELSIF ( NEW.day >= DATE '2010-09-01' AND NEW.day < DATE
> '2010-11-01' ) THEN
> INSERT INTO impressions_by_day_y2010m9ms2 VALUES (NEW.*);
> ELSIF ( NEW.day >= DATE '2010-11-01' AND NEW.day < DATE
> '2011-01-01' ) THEN
> INSERT INTO impressions_by_day_y2010m11ms2 VALUES (NEW.*);
> ELSIF ( NEW.day >= DATE '2011-01-01' AND NEW.day < DATE
> '2011-03-01' ) THEN
> INSERT INTO impressions_by_day_y2011m1ms2 VALUES (NEW.*);
> ELSIF ( NEW.day >= DATE '2011-03-01' AND NEW.day < DATE
> '2011-05-01' ) THEN
> INSERT INTO impressions_by_day_y2011m3ms2 VALUES (NEW.*);
> ELSIF ( NEW.day >= DATE '2011-05-01' AND NEW.day < DATE
> '2011-07-01' ) THEN
> INSERT INTO impressions_by_day_y2011m5ms2 VALUES (NEW.*);
> ELSIF ( NEW.day >= DATE '2011-07-01' AND NEW.day < DATE
> '2011-09-01' ) THEN
> INSERT INTO impressions_by_day_y2011m7ms2 VALUES (NEW.*);
> ELSIF ( NEW.day >= DATE '2011-09-01' AND NEW.day < DATE
> '2011-11-01' ) THEN
> INSERT INTO impressions_by_day_y2011m9ms2 VALUES (NEW.*);
> ELSIF ( NEW.day >= DATE '2011-11-01' AND NEW.day < DATE
> '2012-01-01' ) THEN
> INSERT INTO impressions_by_day_y2011m11ms2 VALUES (NEW.*);
> ELSIF ( NEW.day >= DATE '2012-01-01' AND NEW.day < DATE
> '2012-03-01' ) THEN
> INSERT INTO impressions_by_day_y2012m1ms2 VALUES (NEW.*);
> ELSIF ( NEW.day >= DATE '2012-03-01' AND NEW.day < DATE
> '2012-05-01' ) THEN
> INSERT INTO impressions_by_day_y2012m3ms2 VALUES (NEW.*);
> ELSIF ( NEW.day >= DATE '2012-05-01' AND NEW.day < DATE
> '2012-07-01' ) THEN
> INSERT INTO impressions_by_day_y2012m5ms2 VALUES (NEW.*);
> ELSIF ( NEW.day >= DATE '2012-07-01' AND NEW.day < DATE
> '2012-09-01' ) THEN
> INSERT INTO impressions_by_day_y2012m7ms2 VALUES (NEW.*);
> ELSIF ( NEW.day >= DATE '2012-09-01' AND NEW.day < DATE
> '2012-11-01' ) THEN
> INSERT INTO impressions_by_day_y2012m9ms2 VALUES (NEW.*);
> ELSIF ( NEW.day >= DATE '2012-11-01' AND NEW.day < DATE
> '2013-01-01' ) THEN
> INSERT INTO impressions_by_day_y2012m11ms2 VALUES (NEW.*);
> ELSE
> RAISE EXCEPTION 'Date out of range. Something wrong with
> the impressions_by_day_insert_trigger() function!';
> END IF;
> RETURN NULL;
> END;
> $$
> LANGUAGE plpgsql;
>
> Saludos,
>
> */Ing. Esneiker Enriquez Cabrera/**
> **Esp. B en Ciencias Informáticas*
>
> Desoft en Ciego de Ávila. Joaquín de Aguero esq. Calle 2. Ciego de
> Ávila. Cuba.
> *Telf.:* 53 33 22 8971, *email.:* eenriquez(at)cav(dot)desoft(dot)cu
> <mailto:eenriquez(at)cav(dot)desoft(dot)cu>
>
>
>
> __________ Información de ESET NOD32 Antivirus, versión de la base
> de firmas de virus 11193 (20150218) __________
>
> ESET NOD32 Antivirus ha comprobado este mensaje.
>
> http://www.eset.com
>
>
>
>
>
>
> __________ Información de ESET NOD32 Antivirus, versión de la base de
> firmas de virus 11193 (20150218) __________
>
> ESET NOD32 Antivirus ha comprobado este mensaje.
>
> http://www.eset.com
>
>
>
> __________ Información de ESET NOD32 Antivirus, versión de la base de
> firmas de virus 11193 (20150218) __________
>
> ESET NOD32 Antivirus ha comprobado este mensaje.
>
> http://www.eset.com

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Esneiker Enriquez Cabrera 2015-02-20 17:31:43 RE: [MASSMAIL]duda con particionado de tablas
Previous Message Esneiker Enriquez Cabrera 2015-02-20 16:41:51 RE: [MASSMAIL]duda con particionado de tablas