更新触发器之前的Oracle - 动态循环遍历具有旧值和新值的列

时间:2017-11-24 10:46:45

标签: oracle triggers sql-update beforeupdate

我正在为历史记录功能编写数据库触发器。

我希望有机会为多个表使用一个触发器。另外,我不想按名称检查每一列。

所以我尝试使用动态SQL创建触发器,如下所示:

  FOR columnItem IN (SELECT column_name 
                        FROM all_tab_columns 
                       WHERE TABLE_NAME = UPPER(tableName))
   LOOP
   -- how to use columnItem.column_name for the loop
   -- like :new.[columnItem.column_name] or something like that
       if :new.NAME != :old.NAME Then
         INSERT INTO HISTORY 
         VALUES (HIS_SEQUENCE.nextval, tableName, :new.LOCAL_ID, columnItem.column_name, 'OLD', 'NEW', sysdate(), 'STACKOVERFLOW');
      End If;
   END LOOP;

这不可能,是吗? 希望你知道一种方法。

提前致谢。

0 个答案:

没有答案