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... <http://www.lawebdelprogramador.com/news/imprimir.php?n1=537000> -- ----------------------------------------------------------- ------------------------ Virginia ------------------------ -----------------------------------------------------------