可以写个触发器来记录的吧,参考下面看看,
create or replace trigger tg_tf_pr_order_test_tg
after update or delete on tf_pr_order_test_tg
for each row
declare
iv_PARTITION_ID number(4);--PARTITION_ID,分区字段 iv_ORDER_ID number(16); --工单编号 iv_STAFF_ID number(16); --修改工号 iv_MODIFY_TIME date; --修改日期 iv_TAB_NAME varchar2(50); --表名 iv_COL_NAME varchar2(50); --字段名 iv_NEW_VALUE varchar2(2000);--新值 iv_OLD_VALUE varchar2(2000);--旧值
begin iv_ORDER_ID := :old.ORDER_ID;
iv_PARTITION_ID := mod(:old.ORDER_ID,10000);
iv_MODIFY_TIME := SYSDATE;
iv_TAB_NAME := 'tf_pr_order_test_tg';
if deleting then
for i in (SELECT * FROM ALL_COL_COMMENTS WHERE TABLE_NAME = 'tf_pr_order_test_tg') loop
iv_COL_NAME := i.COLUMN_NAME;
iv_OLD_VALUE := :old.iv_COL_NAME;
insert into TF_PR_ORDER_LOG values(iv_PARTITION_ID,iv_ORDER_ID,'',iv_MODIFY_TIME,iv_TAB_NAME,iv_COL_NAME,'null',iv_OLD_VALUE);
end loop;
elsif updating then
for j in (SELECT * FROM ALL_COL_COMMENTS WHERE TABLE_NAME = 'tf_pr_order_test_tg') loop
iv_COL_NAME := j.COLUMN_NAME;
if old.iv_COL_NAME <> new.iv_COL_NAME then
insert into TF_PR_ORDER_LOG values(iv_PARTITION_ID,iv_ORDER_ID,'',iv_MODIFY_TIME,iv_TAB_NAME,iv_COL_NAME,new.iv_COL_NAME,old.iv_COL_NAME);
end if;
end loop;
end if;
end;