(转载)用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号及正在进行的是那种类型的操作。
具体操作如下:
创建一个触发器如下:
- create or replace trigger tr_test
- after update or delete or insert
- on t_test
- for each row
- begin
- if inserting then
- insert into t_logs values(seq_logid.nextval,:new.id,'t_test','insert',sysdate);
- elsif updating then
- insert into t_logs values(seq_logid.nextval,:old.id,'t_test','update',sysdate);
- elsif deleting then
- insert into t_logs values(seq_logid.nextval,:old.id,'t_test','delete',sysdate);
- end if;
- end;[
tr_test :触发器名字
on t_test:对那个表进行触发
for each row:行级触发器
begin.....end:具体操作步骤
其中,:new.id是指insert后的ID号,old.id是指更新或删除后的ID号。seq_logid.nextval是指序列号,要建立一个q名为seq_logid的序列号