PostgreSQL - Ayuda con trigger

   
Vista:

Ayuda con trigger

Publicado por Virginia (8 intervenciones) el 19/06/2009 23:21:15
Buenas tardes, estoy tratando de implementar un trigger en mi base de datos de tal manera que cuando inserte un nuevo registro en mi tabla de "acumulados" se borre el registro cuya fecha sea superior al último año, es algo así como las consultas via internet de los bancos, que solo muestra las transacciones de los últimos 12 meses.
Por ejemplo si estoy insertando el acumulado del mes de junio 2009, se debe borrar el registro correspondiente al junio 2008 y solo mostrar los acumulados de los últimos 12 meses...

El trigger es el siguiente:

-- Function: autoservicios.historico_sobres()

-- DROP FUNCTION autoservicios.historico_sobres();

CREATE OR REPLACE FUNCTION autoservicios.historico_sobres()
RETURNS trigger AS
$BODY$
DECLARE
anio integer;
mes integer;
codigo integer;
fecha varchar(10);
fecha_nueva varchar(10);
BEGIN
IF TG_OP = 'INSERT' THEN
SELECT dat_fecha INTO fecha FROM autoservicios.toi019_acumulado WHERE nu_co_empleado = NEW.nu_co_empleado;
anio = substring(fecha,0,4);
anio = anio + 1;
mes = substring(fecha,5,2);
IF (mes > 1) THEN
mes = mes - 1;
ELSE
mes = 12;
END IF;
fecha_nueva = anio || '-' || mes || '- 01';
SELECT co_acumulado INTO codigo FROM autoservicios.toi019_acumulado WHERE nu_co_empleado = NEW.nu_co_empleado AND dat_fecha < fecha_nueva;
DELETE FROM autoservicios.tr001_acumulado_concepto WHERE nu_co_acumulado = codigo;
DELETE FROM autoservicios.toi019_acumulado WHERE co_acumulado = codigo;
END IF;
RETURN NEW;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100;
ALTER FUNCTION autoservicios.historico_sobres() OWNER TO postgres;

¿qué estoy haciendo mal? ¿cómo pruebo esta funcion para detectar el error?

Muchas gracias...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda con trigger

Publicado por Guillermo Arias (29 intervenciones) el 05/12/2009 02:51:54
Si es trigger no podrás usar el DEBUG, pero puedes tener una tabla auxiliar que almacene datos testigo o flag que te sirvan de indicio para saber qué pasa realmente con el trigger.
Si tienes otro problema escríbeme.
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar