CREATE OR REPLACE TRIGGER TR_AUDITA
BEFORE INSERT OR DELETE OR UPDATE
ON TABLA_REGISTRO
FOR EACH ROW
DECLARE
BEGIN
IF INSERTING THEN
:NEW.USUARIOMOD:=USER;
:NEW.FECHAMOD:=SYSDATE;
INSERT INTO TABLA_AUDITA VALUES(USER,SYSDATE,'INGRESO EN TABLA_REGISTRO','NOMBRE '||:NEW.NOMBRE);
END IF;
IF UPDATING THEN
:NEW.USUARIOMOD:=USER;
:NEW.FECHAMOD:=SYSDATE;
INSERT INTO TABLA_AUDITA VALUES(USER,SYSDATE,'ACTUALIZO EN TABLA_REGISTRO' ,'NOMBRE '||:OLD.NOMBRE||'NOMBRE '||:NEW.NOMBRE);
END IF;
IF DELETING THEN
INSERT INTO TABLA_AUDITA VALUES(USER,SYSDATE,'BORRO EN TABLA_REGISTRO','NOMBRE '||:OLD.NOMBRE);
END IF;
END;
/
Hay que recordar que si vamos a insertar (inserting) no ponemos :old. ya que es un nuevo registro y por ende no existe.
Para updating ponemos :new y :old, ya que si actualizamos va a ser de un registro existente y de ello se va a derivar un registro nuevo.
En el deleting solo ponemos :old debido a que vamos a eliminar un registro viejo, no va a ser un registro nuevo ovbiamente.
No hay comentarios:
Publicar un comentario