您好,欢迎访问一九零五行业门户网

Oracle中用于数据备份的触发器及表结构

欢迎进入oracle社区论坛,与200万技术人员互动交流 >>进入 运行本文的示例前,请对当前的数据表的插入、删除、更新等进行记录,并把操作日期、操作者、原来数据、现在数据都作为备份,以便在当前备出现问题的时候能够给以恢复。 注释:最好把备份表放在不同
欢迎进入oracle社区论坛,与200万技术人员互动交流 >>进入
运行本文的示例前,请对当前的数据表的插入、删除、更新等进行记录,并把操作日期、操作者、原来数据、现在数据都作为备份,以便在当前备出现问题的时候能够给以恢复。
注释:最好把备份表放在不同的磁盘上或不同的数据库中:
1、建立用于数据备份及操作记录的表:
create table aud_prgamd1(w_rowid varchar2(50), --行idw_action varchar2(1), --操作dttm date, --操作日期opuser varchar2(30), --操作者b$code varchar2(10), --原表中的codea$code varchar2(10), --现表中的codeb$fty varchar2(1), --原表中的ftya$fty varchar2(1) ?现表中的fty);
2、建立实际数据表:
create table prgamd(code varchar2(20),fty varchar2(20))
3、创建自动备份触发器:
create or replace trigger aud_prgamd_triggerafter insert or update or deleteon prgamdfor each rowdeclarev_rowid varchar2(50);v_action varchar2(1);v_opuser varchar(30):='unknow';beginif inserting then v_rowid:=:new.rowid; v_action:='i'; elsif updating then v_rowid:=:new.rowid; v_action:='u'; elsif deleting then v_rowid:=:old.rowid; v_action:='d'; end if;v_opuser:=user;insert into aud_prgamd1(w_rowid,w_action,dttm,opuser,b$code,b$fty,a$code,a$fty)values(v_rowid,v_action,sysdate,v_opuser,:old.code,:old.fty,:new.code,:new.fty); end;
注释:以上的old表示被操作表中原来的数据指向,new表示被操作表中现在的数据指向。
4、操作测试:
insert into prgamd values('x','x');select * from aud_prgamd1 select * from prgamd; update prgamd set code='m1' where fty='x';commit;
其它类似信息

推荐信息