写在前面:

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

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;

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

    

最新文章

  1. myeclipse学习总结一(在MyEclipse中设置生成jsp页面时默认编码为utf-8编码)
  2. iOS-数据持久化-属性列表
  3. UITextField限制中英文字数和光标定位以及第三方输入限制问题
  4. Scrum4.0+5.0
  5. 报错:HTTP Status 404 - There is no Action mapped for namespace [/] and action name [product-save] associated with context path [/20161101-struts2-2].
  6. BZOJ-1070 修车 最小费用最大流+拆点+略坑建图
  7. Linux操作系统常用命令
  8. HttpListener supports SSL only for localhost? install certificate
  9. 【制作镜像】BCEC制作镜像
  10. touchend事件的preventDefault阻止掉了click事件
  11. python通过SMTP发送邮件失败,报错505/535
  12. 在 VS2008 下操作 Excel 的方法总结
  13. linux安装bind with DLZ &lt;NIOT&gt;
  14. ST HW3
  15. JAVA异常处理之finally中最好不要使用return
  16. JavaScript函数(二)
  17. Java EE Expression Language
  18. $符号报not defing 报错
  19. 1、JPA-HelloWorld
  20. gem &quot;ransack&quot;(4000✨) 简单介绍

热门文章

  1. python 学习分享-socketserver
  2. day06_02 元组
  3. day06_01 上节回顾
  4. Leetcode 661.图片平滑器
  5. 第二节 PHPUnit测试的剖析
  6. rsync同步数据
  7. ls目录结构
  8. Codeforces 672D Robin Hood(二分好题)
  9. POJ 3461Oulipo KMP模板
  10. Java面试题之Oracle 支持哪三种事务隔离级别