且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

演示一个通过触发器进行审计的示例

更新时间:2022-10-02 21:47:59

更多精彩内容尽在www.leonarding.com

Car表是一个非常重要的表,记录了4S店汽车的销量情况,我们要对操作这个表动作进行审计

LEO1@LEO1>select * from car;

NAME                       NUM       COST

-------------------- ---------- ----------

toyota                       10         30

volvo                        50         30

honda                        60         30

biaozhi                      70         20

xuetielong                   80         20

polo                         90         20

xiali                        20         10

jili                         30         10

byd                          40         10

9 rows selected.

创建审计表car_audit

LEO1@LEO1>create table car_audit (

name varchar2(20),

num number,

cost number,

uuser varchar2(20),

ddate date);  2   3    4    5   6  

Table created.

创建审计触发器

LEO1@LEO1>create trigger trg_car_audit

after insert or delete or update on car

for each row

declare

a_name  varchar2(20);

a_num  number;

a_cost number;

begin

a_name :=:old.name;

a_num :=:old.num;

a_cost :=:old.cost;

insert into car_auditvalues(a_name,a_num,a_cost,user,sysdate);

end;

/

2    3    4   5    6    7   8    9   10  11   12   13  14  

Trigger created.

删除记录

LEO1@LEO1>delete from car where num=100;

1 row deleted.

LEO1@LEO1>commit;

Commit complete.

插入记录

LEO1@LEO1>insert into carvalues('kia',100,50);

1 row created.

LEO1@LEO1>commit;

Commit complete.

更新记录

LEO1@LEO1>update car set num=200 wherenum=100;

1 row updated.

LEO1@LEO1>commit;

Commit complete.

凡是对car表进行DML操作都会触发审计触发器,并在car_audit表中留下审计记录

LEO1@LEO1>select * from car_audit;

NAME       NUM      COST      UUSER                DDATE

-------------------- ---------- ------------------------------ ---------

kia            100       50       LEO1                 15-JUN-13

                                 LEO1                 15-JUN-13

kia            100       50      LEO1                 15-JUN-13





 本文转自 ztfriend 51CTO博客,原文链接:http://blog.51cto.com/leonarding/1223404,如需转载请自行联系原作者