Auditoria por campos seleccionados

Tengo instalada la base de datos 10g y trabajo con forms 6i.
Debo desarrollar una auditoria de las tablas de una base de datos que serán seleccionadas por un usuario, sobre cada tabla seleccionara también que campos auditar, este paso lo tengo realizado mediante mantenimientos que ya elabore. Lo que quisiera hacer es que al darle guardar al mantenimiento crear un trigger en la tabla indicándole como parámetro que campo debe auditar, no se si esto es posible, no se si se pueda crear un trigger en tiempo de ejecución o bien crear en un package en la bd, un procedure que reciba como parámetros el nombre de la tabla y el campo que fue afectado, aun así al guardar el mantenimiento mencionado antes, necesitaría agregar un trigger que dispare el procedure en el package. ¿Qué sugerencias me puedes dar?
Gracias, si no soy muy explicito por favor indicame para plantear la pregunta de otra forma.

1 Respuesta

Respuesta
1
Al trigger no se le pueden mandar parámetros al triggers, pero si me explicas un poco más seguramente te pueda dar alguna idea.
Hola de nuevo y gracias por tu respuesta.
Lo explico con un ejemplo: en el modulo de auditoria el administrador del modulo elije la tabla "cheques" y de la tabla cheques elije el campo "valor" para ser auditado, cuando se haga el commit del form en cuestión, se debe agregar un trigger a la tabla que se disparara al modificarse el campo "valor", este trigger guardara en una tabla "auditoria" los datos necesarios de la transacción. Lo que necesito específicamente es un procedimiento que escriba el trigger en la tabla al darle commit al form, obviamente esto es en tiempo de ejecución del form. ¿Es posible escribir un trigger en tiempo de ejecución o se puede hacer algo parecido?. Este procedimiento debería recibir como parámetro la tabla y el campo y escribir el trigger en dicha tabla, no lo hago tabla por tabla porque el sistema tiene alrededor de 200 tablas, no todas serán auditadas pero por eso el administrador debe decidir cual si y cual no.
Espero explicarme, ademas lo que quisiera es evitar la auditoria de oracle, si fuera posible. Te agradezco cualquier sugerencia que puedas darme.
Entiendo que ese modulo activaría la auditoria de el campo valor en la tabla cheques en todas las transacciones de la BBDD que se hagan sobre esa tabla hasta que desde ese modulo de auditoria se desactive o active otro campo.
Si es eso, supongo que con "forms_ddl" se puede crear un trigger desde forms yo he creado objetos aunque no triggers. Por supuesto, tendrá que tener permisos el usuario de la base de datos con el que se conecta forms para crearlos.
Es correcto, de la manera que mencionas trabajara, como puedo hacer lo que dices sobre "forms_ddl", me podrías dar una ayuda del tema, tal vez pueda empezar desde allí para lo de los triggers, sobre los permisos no hay problema.
Gracias
Mi idea es que según se seleccionan los campos a auditar se guarden los nombres de los campos para generar el código del triggers dinámicamente.
Declare
v_sql varchar2(32000);
begin
v_sql:='CREATE OR REPLACE TRIGGER' ;
v_sql:=v_sql||' After insert or update or delete';
--Todas las columnas a auditar
v_sql:=v_sql||' OF '||:bloque.nombre_columna1';
v_sql:=v_sql:=' , '||:bloque.nombre_columna2';
....
v_sql:=v_sql||' ON tabla';
v_sql:=v_sql||' FOR EACH ROW';
v_sql:=v_sql||' DECLARE';
v_sql:=v_sql||'BEGIN';
v_sql:=v_sql||'Inserts a la tabla auditoria';
v_sql:=v_sql||'END';
FORMS_DDL(v_sql);
end;
Esto debería estar en el forms triggers donde quieres que se genere el código.
Esta es mi idea.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas