Estimados.
Tengo un problema y espero que puedan damre alguna solucion ya que no he podido encontrar ninguna, tengo 2 trigger en un proyecto el cual los ocupo para auditoria de tablas, los cuales obviamente despues de un insert o update o delete se ejecutan el problemas es que los tengo exo de distinta forma uno con este tipo de if
if :new.columna <> :old.columa then
insert into auditoria(id,nombreTabla,nombreColumna,valorAntigu o,ValorNuevo,fecha);
end if;
y otro if de esta forma
if updating('columna') then
insert into auditoria(id,nombreTabla,nombreColumna,valorAntigu o,ValorNuevo,fecha);
end if;
el problema es que haciendo el trigger con el primer if, me inserta 2 filas cuando la cantidad de columnas alteradas son 5, y en el otro cuando altero 5 columnas se insertan las 5 pero independientemente si tienen dato o no
mi consulta es porque en el primer if no insertaria todas las columnas si he visto ejemplos de ese mismo ejercicio pero no funciona como debe.
espero alguna respuesta porfa
a y tambien otra pregunta, porque no en oracle no funciona el inserting? ya que tengo un if que dice esto
if inserting then
if :new.columna <> :old.columna then
insert into auditoria(id,nombreTabla,nombreColumna,valorAntigu o,ValorNuevo,fecha);
end if;
end if;
y cuando se ejecuta un insert en la tabla no me inserta nada
el trigger tiene esto en el encabezado
CREATE OR REPLACE TRIGGER auditoria
BEFORE DELETE OR INSERT OR UPDATE
ON tabla
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
espero ojala puedan ayudarme