写在前面:

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

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触发器简单入门记录的更多相关文章

  1. Oracle触发器简单使用记录

    在ORACLE系统里,触发器类似函数和过程.1.触发器类型:(一般为:语句级触发器和行级触发器.) 1).DML触发器: 创建在表上,由DML事件引发 2).instead of触发器: 创建在视图上 ...

  2. Java中关于LockSupport的简单入门记录

    LockSupport的JDK的文档描述:Basic thread blocking primitives for creating locks and other synchronization c ...

  3. Oracle——存储过程简单入门实例

    1.连接plsql developer,打开一个SQL Window 2.SQL Window中创建表user_info -- Create table create table USER_INFO ...

  4. 【oracle】触发器简单实现

    目标:实现实时备份uertest表数据至usertest_temp中,两表结构一致 解决:用oracle触发器实现同步 结果: 1.建表 -- 简单的用户表 create table USERTEST ...

  5. (转)oracle触发器使用:after insert 与before insert的简单使用注意

    本文转载自:http://blog.csdn.net/kuangfengbuyi/article/details/41446125 创建触发器时,触发器类型为after insert , 在begin ...

  6. Oracle PL/SQL入门之慨述

    Oracle PL/SQL入门之慨述 一.PL/SQL出现的目的 结构化查询语言(Structured Query Language,简称SQL)是用来访问关系型数据库一种通用语言,它属于第四代语言( ...

  7. [原创]MYSQL的简单入门

    MYSQL简单入门: 查询库名称:show databases; information_schema mysql test 2:创建库 create database 库名 DEFAULT CHAR ...

  8. oracle触发器加条件判断

    oracle触发器加条件判断,如果某个字段,isnode=0,那么不执行下面的方法,数据如下: create or replace trigger tr_basestation_insert_emp ...

  9. Oracle 触发器在日志管理开发中的应用

    摘要: 本文讨论了利用数据库中的触发器对日志管理进行设计与实现的方法, 是对原来在客户端软件中编写日志管理方法的一种改进, 并给出了 Oracle9i 中的实例演示.关键词: Oracle; 触发器; ...

随机推荐

  1. 重复造轮子系列--字符串处理(C语言)

    这些字符代码是以前写的,源于很久很久以前的一个VC++项目,在当时的部门编程比赛里因为用了项目代码的xsplit函数,万万没想到,那个做了几年的项目里面居然有坑..xsplit函数居然不能split连 ...

  2. 【CDN】- 什么是CDN

    高冷科普: CDN,Content Delivery Network缩写,即内容分发网络.通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量 ...

  3. NativeScript Vue 和 Weex 对比与分析

    Weex Weex是一个项目,由阿里巴巴创造.它的口号是“一次编写,到处运行”,这意味着你可以使用完全相同的代码库构建网站(HTML5),Android和iOS的应用.目前有几个Weex的生产项目,在 ...

  4. 【CZY选讲·黑白染色】

    题目描述 给出平面上n 个点,试将他们黑白染色,要求染色后无法用一条直线把黑白完全分开. 随便输出一种方案. 数据范围 n<=100000 题解:       ①点数很多,但是可以发现至多需 ...

  5. 《c程序设计语言》读书笔记-4.14-定义宏交换两个参数

    #include <stdio.h> #include <math.h> #include <stdlib.h> #include <string.h> ...

  6. webpack最佳入门实践系列(4)

    7.使用字体 7.1.安装字体库-font-awesome 我们通过npm来安装字体 npm install font-awesome --save 这个时候,我们的package.json配置文件变 ...

  7. mysql如何更改character-set-server默认为latin1

    运行环境:win10 mysql版本:MYSQL5.7免安装版(或解压版) 今天在学习mysql字符集有关乱码的知识 然后发现了latin1的字符集编码格式,虽然命令行窗口改变很容易,只需两行命令 s ...

  8. hihoCoder 1015KMP

    #include <iostream> #include <algorithm> #include <stdio.h> #include <math.h> ...

  9. bzoj 1579: [Usaco2009 Feb]Revamping Trails 道路升级——分层图+dijkstra

    Description 每天,农夫John需要经过一些道路去检查牛棚N里面的牛. 农场上有M(1<=M<=50,000)条双向泥土道路,编号为1..M. 道路i连接牛棚P1_i和P2_i ...

  10. log4net日志分割,按大小分割

    最近写了一个socket通信的手表在线服务端,在日志方面,记录下Log4net日志分割 1.引入log4net.dll 2.web.config添加configsection handler 映射: ...