Re: [pgsql-es-ayuda] Particionamiento de tablas: evitar insercion en la tabla maestra
El día 10 de enero de 2012 14:44, Sergio Sinuco escribió: > 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||')'; > Haz pensado que pasa si la tabla no existe? Se que el mio es un concepto pesimista, pero Murphy siempre da vueltas. Si estas 100% seguro que no puede pasar, ok. -- -- Emanuel Calvo Helpame.com - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org) Para cambiar tu suscripci�n: http://www.postgresql.org/mailpref/pgsql-es-ayuda
Re: [pgsql-es-ayuda] Particionamiento de tablas: evitar insercion en la tabla maestra
El día 10 de enero de 2012 15:39, Sergio Sinuco escribió: > 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; Está bien que no aparezcan registros. ONLY indica que utilice solo la tabla detallada y no las heredadas. La maestra no debe contener datos... Si lo has captado de antemano, genial :D -- -- Emanuel Calvo Helpame.com - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org) Para cambiar tu suscripci�n: http://www.postgresql.org/mailpref/pgsql-es-ayuda
RE: [pgsql-es-ayuda] Particionamiento de tablas: evitar insercion en la tabla maestra
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:sergiosin...@datatraffic.com.co] Enviado el: martes, 10 de enero de 2012 08:44 a.m. Para: 'Emanuel Calvo' CC: 'pgsql-es-ayuda@postgresql.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@gmail.com] Enviado el: martes, 10 de enero de 2012 07:42 a.m. Para: Sergio Sinuco CC: pgsql-es-ayuda@postgresql.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 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 - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org) Para cambiar tu suscripci�n: http://www.postgresql.org/mailpref/pgsql-es-ayuda
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....@gmail.com] Enviado el: martes, 10 de enero de 2012 07:42 a.m. Para: Sergio Sinuco CC: pgsql-es-ayuda@postgresql.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 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 - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org) Para cambiar tu suscripci�n: http://www.postgresql.org/mailpref/pgsql-es-ayuda
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 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 - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org) Para cambiar tu suscripci�n: http://www.postgresql.org/mailpref/pgsql-es-ayuda
[pgsql-es-ayuda] Particionamiento de tablas: evitar insercion en la tabla maestra
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 Gracias. Sergio Sinuco.