zoukankan      html  css  js  c++  java
  • (转载)用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的序列号
  • 相关阅读:
    校园导游图的课程设计(三)
    校园导游图的课程设计(二)
    vim中Mapping already in use: "<LocalLeader>is", mode "n"错误解决的方法解释
    fedora 的截图快捷键
    校园导游图的课程设计(一)
    theos(一)
    脱壳
    初识Mach-O
    Cycript(二)
    Cycript(一)
  • 原文地址:https://www.cnblogs.com/rethink/p/1708325.html
Copyright © 2011-2022 走看看