阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Oracle触发器简单入门实例

93次阅读
没有评论

共计 1224 个字符,预计需要花费 4 分钟才能阅读完成。

最近,老项目新增了日报优化的需求我用 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;

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-22发表,共计1224字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中