+ -
当前位置:首页 → 问答吧 → oracle中触发器实现某个表的历史修改痕迹记录的问题

oracle中触发器实现某个表的历史修改痕迹记录的问题

时间:2011-12-02

来源:互联网

各位大虾好,有一个这样的问题不知道能不能用触发器实现,情况如下
    我有两个表:legal、legal_history ,legal表中有好多数据会进行修改,现在我想通过触发器记录下所有的修改痕迹,比如说legal表中有条数据为A,改后这条数据变成了B,我需要把A记录后legal_history中,下次如果再改,由B变成C,那么legal_history表中记录下B这条记录,依此类推,了解到触发器的一些作用后,我想如果这种方法可以实现,那么比程序的效率将要快,个人认为,只是不知道我的想法触发器能不能满足,请各位高手指点,谢谢

   数据库是oracle

作者: niuge798588567   发布时间: 2011-12-02

触发器的基本用法,大致是这样的SQL code

create or replace trigger tr_legal_change
  after update  on legal  
  for each row    
  declare
begin
  insert into  legal_history 
    values(:old.a,:old.b,:old.c,sysdate);
    end tr_legal_change;
    
    

作者: dws2004   发布时间: 2011-12-02

引用 1 楼 dws2004 的回复:

触发器的基本用法,大致是这样的SQL code

create or replace trigger tr_legal_change
after update on legal
for each row
declare
begin
insert into legal_history
values(:old.a,:old.b,:old.c,sysdate……


+1,利用触发器在修改记录时保存原始值。

作者: imp860124   发布时间: 2011-12-02

正是触发器的典型应用啊。
示例代码:
SQL code

CREATE OR REPLACE TRIGGER TriggerUpdateLegeal
    AFTER UPDATE ON legal  
    FOR EACH ROW
DECLARE
  
BEGIN
    INSERT INTO legal_history VALUES(:OLD.字段1, :OLD.字段2, ....);
END TriggerUpdateLegeal;


作者: LuiseRADL   发布时间: 2011-12-02

历史表最好加上一个备注字段,将操作日期、操作员及操作说明等信息保存起来。

作者: iamlaosong   发布时间: 2011-12-02