аудит 50 столбцов с использованием оракула

Мне нужно создатьtrigger вoracle 11g для проверки таблицы.

У меня есть стол с50 columns что должно бытьaudited.

For every new insert into a table ,i need to put an entry in audit table (1 row). For every update ,suppose i update 1st 2nd column ,then it will create two record in audit with its old value and new value .

structure of audit table will be

 id        NOT NULL
 attribute NOT NULL
 OLD VALUE NOT NULL
 NEW VALUE NOT NULL
 cre_date  NOT NULL
 upd_date  NULL
 cre_time  NOT NULL
 upd_time  NULL

В случаеinsert только первичный ключ (основная таблица), т.е.id  а такжеcre_date and cre_time должны быть населены иattribute равно* , в случае обновления, предположим, что colA и colB обновляются, тогда необходимо заполнить все. В этом случае будут созданы две записи с атрибутом первой записи.colA и соответствующийold and new значение, и то же самое дляcolB

Теперь мое решение для аудитаnot very optimized я создалrow level trigger , который проверит для каждой и каждых 50 столбцов для этой таблицы, была ли онаchanged или не на основе егоnew and old value(если -else), и он заполнит таблицу аудита. Я не удовлетворен своим решением, поэтому я публикую здесь. Другое решение, которое я видел в ссылке ниже:

http://stackoverflow.com/questions/1421645/oracle-excluding-updates-of-one-column-for-firing-a-trigger

Это не работает в моем случае, я сделал POC для этого, как показано ниже:

create table temp12(id number);

create or replace trigger my_trigger
after update or insert on temp12
for each row
declare
  TYPE tab_col_nt IS table of varchar2(30);

  v_tab_col_nt tab_col_nt;

begin
 v_tab_col_nt := tab_col_nt('id','name');

   for r in v_tab_col_nt.first..v_tab_col_nt.last
   loop
      if updating(r) then
         insert into data_table values(1,'i am updating'||r);
      else
      insert into data_table values(2,'i am inserting'||r);
      end if;
   end loop;

 end;

В случае обновления он вызывает остальную часть, я не знаю почему.    Может ли это быть возможно черезcompound trigger

Ответы на вопрос(5)

Ваш ответ на вопрос