(转载)用oracle触发器对记录表增加记录的问题

转载自:http://tcrct.javaeye.com/blog/341211 

现想对指定用户下的指定表都作一个操作记录,有一个logs表, 

字段          类型 
id          number 
objid       varchar2(50)   --操作表的ID字段 
objname     varchar2(20)   --操作表的名称 
optione      varcahr2(20)   --操作类型(增删改) 
createtime  date           --logs记录创建时间 

需求就是,创建一个触发器,当对用户下的指定表进行增删改时,就对logs表增加一条操作记录。网上搜了很久都没有找到所要的答案,不知如何能自动得知操作表的ID号及正在进行的是那种类型的操作。 

具体操作如下: 

创建一个触发器如下: 

Sql代码 
  1. create or replace trigger tr_test   
  2. after update or delete or insert   
  3. on t_test   
  4. for each row   
  5. begin   
  6.   if inserting then   
  7.   insert into t_logs  values(seq_logid.nextval,:new.id,'t_test','insert',sysdate);   
  8.   elsif updating then   
  9.   insert into t_logs  values(seq_logid.nextval,:old.id,'t_test','update',sysdate);   
  10.   elsif deleting then   
  11.   insert into t_logs  values(seq_logid.nextval,:old.id,'t_test','delete',sysdate);   
  12.   end if;   
  13. end;[  



tr_test :触发器名字 
on t_test:对那个表进行触发 
for each row:行级触发器 
begin.....end:具体操作步骤 
其中,:new.id是指insert后的ID号,old.id是指更新或删除后的ID号。seq_logid.nextval是指序列号,要建立一个q名为seq_logid的序列号
posted @ 2010-04-09 14:55  rethink  阅读(409)  评论(0编辑  收藏  举报