大家好,请教在oracle中能否获取update记录 所涉及的字段的名称?如能实现的话,请教相关实现方法。谢谢~
0
如题:
例如表 A 有ID,NAME,ADDRESS 3个字段
update A set name='tom' address='CHINA' where ID='001';
想要得到的结果是,得到 NAME,ADDRESS这2个字段名。
例如表 A 有ID,NAME,ADDRESS 3个字段
update A set name='tom' address='CHINA' where ID='001';
想要得到的结果是,得到 NAME,ADDRESS这2个字段名。
没有找到相关结果
重要提示:提问者不能发表回复,可以通过评论与回答者沟通,沟通后可以通过编辑功能完善问题描述,以便后续其他人能够更容易理解问题.
1 个回复
Amy - 今天我们不成功,一定会有人成功。假如我们不能成功,后悔的一定是我们自己。我们今天要做的,就是不要让自己后悔。 2013-09-17 回答
赞同来自: 用心生活 、梁勇
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;