CREATE OR REPLACE TRIGGER DTULTATU_FILITABGER
BEFORE INSERT OR UPDATE OR DELETE
ON FILITABGER FOR EACH ROW

BEGIN
   IF INSERTING THEN
      :NEW.DTULTATU := SYSDATE;
      UPDATE TABEPRECGER
         SET DTULTATU = SYSDATE
       WHERE CDTABEPREC = :NEW.CDTABEPREC;

      UPDATE TABEVENDGER
         SET DTULTATU = SYSDATE
       WHERE CDTABEPREC = :NEW.CDTABEPREC;

      UPDATE ITEMPRECOGER
         SET DTULTATU = SYSDATE
       WHERE CDTABEPREC = :NEW.CDTABEPREC;

       UPDATE ITEMPRECODIAGER
          SET DTULTATUITPD = SYSDATE
        WHERE CDTABEPREC = :NEW.CDTABEPREC;
   END IF;
   IF UPDATING THEN
      :NEW.DTULTATU := SYSDATE;

      UPDATE TABEPRECGER
         SET DTULTATU = SYSDATE
       WHERE CDTABEPREC = :OLD.CDTABEPREC;

      UPDATE TABEVENDGER
         SET DTULTATU = SYSDATE
       WHERE CDTABEPREC = :OLD.CDTABEPREC;
       
      UPDATE ITEMPRECOGER
         SET DTULTATU = SYSDATE
       WHERE CDTABEPREC = :OLD.CDTABEPREC;

       UPDATE ITEMPRECODIAGER
          SET DTULTATUITPD = SYSDATE
        WHERE CDTABEPREC = :OLD.CDTABEPREC;
   END IF;
   IF DELETING THEN
      INSERT INTO DELETECACHE (NMTABLECACHE, CDFILICACHE, DSKEYCACHE, DTULTATUCACH)
                       VALUES ('FILITABGER', :OLD.CDFILIAL, 'CDTABEPREC='||:OLD.CDTABEPREC||';CDFILIAL='||:OLD.CDFILIAL||';', SYSDATE);
   END IF;
END;
/

ALTER TABLE FILITABGER MODIFY DTULTATU DEFAULT SYSDATE
/

UPDATE FILITABGER SET DTULTATU = SYSDATE WHERE DTULTATU IS NULL
/

CREATE INDEX TABEPRECGER_01 ON TABEPRECGER (CDTABEPREC)
/

CREATE INDEX TABEVENDGER_01 ON TABEVENDGER (CDTABEPREC)
/

CREATE INDEX ITEMPRECOGER_01 ON ITEMPRECOGER (CDTABEPREC)
/

CREATE INDEX ITEMPRECODIAGER_01 ON ITEMPRECODIAGER (CDTABEPREC)
/