Hola nuevamente, creo que debes rectificar algo, pues hice un ejemplo similar al tuyo y funciona como espero, lo pongo a continuación:

3 tablas (numero[padre], impar, par [hijas])
CREATE TABLE numeros
(
  a integer
);


CREATE TABLE impar
(
-- Inherited from table numeros:  a integer
)
INHERITS (numeros);

CREATE TABLE par
(
-- Inherited from table numeros:  a integer
)
INHERITS (numeros);

-- Rule: desvioimpar ON numeros



CREATE OR REPLACE RULE desvioimpar AS
    ON INSERT TO numeros
   WHERE (new.a % 2) = 1 DO INSTEAD  INSERT INTO impar (a)
  VALUES (new.a);



-- DROP RULE desviopar ON numeros;

CREATE OR REPLACE RULE desviopar AS
    ON INSERT TO numeros
   WHERE (new.a % 2) = 0 DO INSTEAD  INSERT INTO par (a)
  VALUES (new.a);




luego ejecuto


insert into numeros(a) values (1),(2)

select * from only numeros
(retorna vacío)

y en las hijas están los datos.

  select * from  par
2
  select * from  impar
1

saludos



On 20/02/15 14:31, Esneiker Enriquez Cabrera wrote:

Lo consulté y me muestra datos.

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.:* eenriq...@cav.desoft.cu <mailto:eenriq...@cav.desoft.cu>

*De:*Anthony Sotolongo [mailto:asotolo...@gmail.com]
*Enviado el:* viernes, 20 de febrero de 2015 12:26
*Para:* Esneiker Enriquez Cabrera; 'POSTGRES'
*Asunto:* Re: [MASSMAIL][pgsql-es-ayuda] duda con particionado de tablas

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.:* eenriq...@cav.desoft.cu
    <mailto:eenriq...@cav.desoft.cu>

    *De:*pgsql-es-ayuda-ow...@postgresql.org
    <mailto:pgsql-es-ayuda-ow...@postgresql.org>
    [mailto:pgsql-es-ayuda-ow...@postgresql.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.:* eenriq...@cav.desoft.cu
        <mailto:eenriq...@cav.desoft.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




__________ 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

Responder a