Ver Mensaje Individual
  #6 (permalink)  
Antiguo 14/06/2016, 08:23
Avatar de AVBorland
AVBorland
 
Fecha de Ingreso: marzo-2016
Ubicación: Moscu
Mensajes: 42
Antigüedad: 8 años, 1 mes
Puntos: 4
Respuesta: Trigger Oracle se crea pero no Actualiza

Cita:
Iniciado por huesos52 Ver Mensaje
Código SQL:
Ver original
  1. CREATE OR REPLACE TRIGGER TR_CALCULARMORA
  2. BEFORE UPDATE
  3. ON Prestamo
Por que BEFORE UPDATE?
Yo creo que:
Utilizar
Código SQL:
Ver original
  1. CREATE OR REPLACE package test_Package AS
  2.   TYPE TTmpRec IS record (id_lib INTEGER, Mora INTEGER);
  3.   TYPE TTmpTabla IS TABLE OF TTmpRec INDEX BY binary_integer;
  4.  
  5.   TempTabla TTmpTabla;
  6.   Latch BOOLEAN:=FALSE;
  7.   PROCEDURE Update_Data;
  8. END;
  9. /
  10.  
  11. CREATE OR REPLACE TRIGGER TR_CALCULARMORA_TMP
  12.     AFTER UPDATE
  13.      ON Prestamo
  14.      FOR EACH ROW
  15.     DECLARE
  16.         dias INTEGER;
  17.         fechaDevOriginal DATE;
  18.     BEGIN
  19.          SELECT fechaDev INTO fechaDevOriginal FROM Prestamo WHERE idLector=:OLD.idLector AND idLibro=:OLD.idLibro;
  20.          SELECT trunc(sysdate) - to_date(fechaDevOriginal, 'dd-mm-yyyy') INTO dias FROM dual;
  21.          IF dias > 3 THEN
  22.           Test_Package.TempTabla(:OLD.idLector).id_lib:=:OLD.idLibro;
  23.           Test_Package.TempTabla(:OLD.idLector).Mora:=(dias-3)*5;
  24.          END IF;
  25.     END;
  26. /
  27.  
  28. CREATE OR REPLACE TRIGGER TR_CALCULARMORA
  29. After INSERT OR UPDATE OR DELETE ON Prestamo
  30. BEGIN  IF test_Package.Latch THEN
  31.     Test_Package.Update_Data;
  32.   END IF;
  33. END;
  34. /
Yo escribo procedure Update_Data mas tarde (pordegracias, no tengo tiempo ahora)