ayuda con trigger

From: Virginia <mavir78(at)gmail(dot)com>
To: Ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: ayuda con trigger
Date: 2009-06-21 22:38:13
Message-ID: 874791d0906211538n6eb560cvab9c05025b386f7b@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

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 ------------------------
-----------------------------------------------------------

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alfredo Rico 2009-06-22 01:43:44 Sobre los TableSpaces
Previous Message Jose Vasquez 2009-06-21 21:50:34 Re: procedimiento almacenado