RE: Particionamiento de tablas: evitar insercion en la tabla maestra

From: "Sergio Sinuco" <sergiosinuco(at)datatraffic(dot)com(dot)co>
To: "'Emanuel Calvo'" <postgres(dot)arg(at)gmail(dot)com>
Cc: <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: RE: Particionamiento de tablas: evitar insercion en la tabla maestra
Date: 2012-01-10 14:39:44
Message-ID: 002801cccfa5$b28e5e90$17ab1bb0$@com.co
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola Emanuel. Tenía un error de concepto.

Al ejecutar el siguiente query me aparecían todas los registros:

select * FROM insert_informe_15min_diario_cola_maestra;

Sin embargo al ejecutar el siguiente query ya no me aparecia ningun registro lo que indica que no se estaba insertando ningún registro.

select * FROM only insert_informe_15min_diario_cola_maestra;

Gracias.

Att
Sergio E.

-----Mensaje original-----
De: Sergio Sinuco [mailto:sergiosinuco(at)datatraffic(dot)com(dot)co]
Enviado el: martes, 10 de enero de 2012 08:44 a.m.
Para: 'Emanuel Calvo'
CC: 'pgsql-es-ayuda(at)postgresql(dot)org'
Asunto: RE: [pgsql-es-ayuda] Particionamiento de tablas: evitar insercion en la tabla maestra

Gracias Emanuel por responder. Existe una tabla maestra llamada " insert_informe_15min_diario_cola_maestra" y unas tablas hijas "informes.informe_15min_diario_cola_X_Y" donde X es el numero del mes y Y es el año. El código del trigger es el siguiente:

CREATE TRIGGER insert_informe_15min_diario_cola
BEFORE INSERT
ON informes.informe_15min_diario_cola_maestra
FOR EACH ROW
EXECUTE PROCEDURE informes.informe_15min_diario_cola();

CREATE OR REPLACE FUNCTION informes.informe_15min_diario_cola()
RETURNS trigger AS
$BODY$
DECLARE
mesvar integer;
anovar integer;
comandovar character varying;
BEGIN
mesvar = EXTRACT(MONTH FROM NEW.fecha);
anovar = EXTRACT(YEAR FROM NEW.fecha);

comandovar := 'INSERT INTO informes.informe_15min_diario_cola_'||mesvar||'_'||anovar||'(fecha, dia_semana, hora, hora_inicio, hora_fin, num, max, min, total)
VALUES ('||quote_literal(NEW.fecha)||', '||NEW.dia_semana||', '||NEW.hora||', '||quote_literal(NEW.hora_inicio)||', '||quote_literal(NEW.hora_fin)||', '||NEW.num||', '||NEW.max||', '||NEW.min||', '||NEW.total||')';

EXECUTE comandovar;

RETURN NULL;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;

Gracias.

Att
Sergio E.

-----Mensaje original-----
De: Emanuel Calvo [mailto:postgres(dot)arg(at)gmail(dot)com]
Enviado el: martes, 10 de enero de 2012 07:42 a.m.
Para: Sergio Sinuco
CC: pgsql-es-ayuda(at)postgresql(dot)org
Asunto: Re: [pgsql-es-ayuda] Particionamiento de tablas: evitar insercion en la tabla maestra

El día 9 de enero de 2012 22:40, Sergio Sinuco
<sergiosinuco(at)datatraffic(dot)com(dot)co> escribió:
> Hola a todos. Estoy tratando de partir una tabla usando un trigger para
> distribuir las inserciones desde la tabla maestra a las tablas hijas. Sin
> embargo a pesar de que el trigger es "ON BEFORE INSERT" y retorna NULL, el
> registro se inserta en la tabla maestra y en la tabla hija. Que podra estar
> fallando?. Estoy usando Postgresql 8.4
>

Pega el código del disparador.

--
--
Emanuel Calvo
Helpame.com

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Juan Carlos Ramirez Zambrano 2012-01-10 22:34:00 Tamaño pg_atribute da problemas
Previous Message Lazaro Rubén García Martinez 2012-01-10 14:18:49 RE: Intellesense para pgAdmin