运行本文的示例前,请对当前的数据表的插入、删除、更新等进行记录,并把操作日期、操作者、原来数据、现在数据都作为备份,以便在当前备出现问题的时候能够给以恢复。
注释:最好把备份表放在不同的磁盘上或不同的数据库中:
1、建立用于数据备份及操作记录的表:
CREATE TABLE AUD_PRGAMD1( W_ROWID VARCHAR2(50), –行ID W_ACTION VARCHAR2(1), –操作 DTTM DATE, –操作日期 OPUSER VARCHAR2(30), –操作者 B$CODE VARCHAR2(10), –原表中的CODE A$CODE VARCHAR2(10), –现表中的CODE B$FTY VARCHAR2(1), –原表中的FTY A$FTY VARCHAR2(1) –现表中的FTY );
2、建立实际数据表:
create table prgamd
(
code varchar2(20),
fty varchar2(20)
)
3、创建自动备份触发器:
CREATE or replace TRIGGER AUD_PRGAMD_TRIGGER
AFTER INSERT OR UPDATE OR DELETE
ON PRGAMD
FOR EACH ROW
DECLARE
V_ROWID VARCHAR2(50);
V_ACTION VARCHAR2(1);
V_OPUSER VARCHAR(30):=’UNKNOW’;
BEGIN
IF 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;
—-想了解更多的数据库相关异常处理怎么解决关注<计算机技术网(www.ctvol.com)!!>
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/dtteaching/83315.html