Efectivamente, no es posible hacer este tipo de operaciones sobre un trigger que afecta directamente la misma tabla.
A esto, se le conoce como tablas mutantes. Sin embargo, para lograr tu objetivo, pudes jugar un poco con las variables OLD y NEW.
Prueba este treigger:
Código SQL:
Ver originalCREATE OR REPLACE TRIGGER TR_CALCULARMORA
BEFORE UPDATE
ON Prestamo
FOR EACH ROW
DECLARE
dias INTEGER;
BEGIN
DIAS := TRUNC(SYSDATE) - :OLD.FECHADEV;
IF dias > 3 THEN
:NEW.MORA:=(DIAS-3)*5;
:NEW.FECHAREALDEV:=SYSDATE;
END IF;
END;
/
De esta forma, no se realizan operaciones sobre la tabla, solo se aprovechan los valores actuales reales de la tabla.
Nos cuentas