手机版
你好,游客 登录 注册
背景:
阅读新闻

Oracle触发器简单入门实例

[日期:2018-04-25] 来源:Linux社区  作者:eleven258 [字体: ]

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

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;

本文永久更新链接地址https://www.linuxidc.com/Linux/2018-04/152050.htm

linux
相关资讯       Oracle触发器 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款