数据库教程:Oracle触发器简单入门记录

写在前面: 最近,老项目新增了日报优化的需求,丽姐让我用触发器去实现当数据插入或者更新的时候,实现对日报表数据更新操作。嗯嗯嗯呢,之前学习数据库的时候,有碰到过触发器,但都是一跳而过,也没怎么去真正的实践,这次就权当再次去学习吧~~ 1.触发器实例: 上面的触发器例子,只是一个框架,并不能执行,这里 …

写在前面:

  最近,老项目新增了日报优化的需求,丽姐让我用触发器去实现当数据插入或者更新的时候,实现对日报表数据更新操作。嗯嗯嗯呢,之前学习数据库的时候,有碰到过触发器,但都是一跳而过,也没怎么去真正的实践,这次就权当再次去学习吧~~

 

1.触发器实例:

--创建触发器 create or replace trigger test_trigger2 --触发器是在insert或update动作之后执行的 after insert or update --作用于dms.kqm_leaveapply表的每一行 on dms.kqm_leaveapply --这里默认为new ,old 怕与其他变量有冲突,则做了修改 referencing new as new_val old as old_val for each row --触发器限制条件   when (new_val.statusname = '核准') --触发器描述语句中,新数据使用new_val进行引用,在下面的操作语句中,新数据使用:new_val进行引用  declare  --声明变量    st_str varchar2(100);    et_str varchar2(100);     time1 number;    time2 number;    ...... begin    ......     --查询结果集,进行遍历     for daylist in (      --查询出指定时间段内的所有日期      select to_char(:new_val.startdate+rownum-1,'yyyymmdd') as dd      from dual      connect by rownum <=           trunc(:new_val.enddate - :new_val.startdate)+1    )    loop               --写要进行操作的逻辑         ......          --更新另外一张表的数据           update dms.d_dailyreport_t d set d.shours =  (8 - ItemValue)          where d.personcode = :new_val.workno and  to_char(d.ftime,'yyyy/mm/dd') like to_char(daylist.dd,'yyyy/mm/dd')  ;     end loop;         --substr()数据截取      st_str :=substr(:new_val.starttime,1,2) || substr(:new_val.starttime,4,2) ;      et_str := substr(:new_val.endtime,1,2) || substr(:new_val.endtime,4,2) ;      time1 := to_number(st_str);      time2 := to_number(et_str);       if(Item_m<0) then          Item_m := Item_m *(-1);          tHour := tHour -1;      end if;  end test_trigger2;

  上面的触发器例子,只是一个框架,并不能执行,这里只做简单的记录,网上的例子有很多,稍微看一下就能简单入门了,这里就不多做记录与说明了~~

 

 

    

需要了解更多数据库技术:Oracle触发器简单入门记录,都可以关注数据库技术分享栏目—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/dtteaching/801128.html

(0)
上一篇 2021年9月13日
下一篇 2021年9月13日

精彩推荐