trigger
Publicado por Argelia (3 intervenciones) el 30/04/2007 13:31:25
Hola a todos!!!! Estoy empezando con oracle 9i y necesito lanzar un trigger que cuando se modifique o inserte un registro en cualquier tabla de cualquier esquema de mi base de datos, se inserte en una tabla 'tabla' la fecha,hora, usuario, tabla(en la que se ha realizado el insert o update) y el esquema en el que se ubica la tabla anterior. Mi duda es si hay alguna manera de lanzar el mismo trigger desde cualquier tabla de la base de datos que pille dinámicamente el nombre de dicha tabla para guardar su nombre en la tabla en la que quiero que se registren los cambios. En el siguiente código creo el trigger pero para que se ejecute el trigger cuando se produzca un cambio en la tabla diccionario.tipo_tabla pero yo lo que quiero es que ese nombre lo pille desde cualquier tabla de la base de datos y que el trigger sea capaz de lanzarse desde cualquier parte. Bueno antes que nada , se puede hacer esto que estoy pidiendo o tengo que crear un trigger para cada tabla de cada esquema??? claro, es que a lo mejor no se puede y yo aquí largando tremento discurso.
CREATE TRIGGER DICCIONARIO.CAMBIO
After insert or update on diccionario.tipo_tabla
FOR EACH ROW
BEGIN
insert into diccionario."Tabla"(FECHA,SESION,ESQUEMA,TABLA) values (Sysdate,(select user from dual),(select substr(sys_context('USERENV','CURRENT_SCHEMA'),1,50) from dual ), 'tipo_tabla');
END;
GRACIAS A TODOS!!!!!
CREATE TRIGGER DICCIONARIO.CAMBIO
After insert or update on diccionario.tipo_tabla
FOR EACH ROW
BEGIN
insert into diccionario."Tabla"(FECHA,SESION,ESQUEMA,TABLA) values (Sysdate,(select user from dual),(select substr(sys_context('USERENV','CURRENT_SCHEMA'),1,50) from dual ), 'tipo_tabla');
END;
GRACIAS A TODOS!!!!!
Valora esta pregunta


0