CREATE
TRIGGER FUEL.HDGJcoaldayexpend1_insertTRIGGER AFTER
INSERT
ON
FUEL.coaldayexpend1 REFERENCING NEW AS new FOR EACH ROW MODE DB2SQL begin atomic declare expDate TIMESTAMP ; declare plantCode VARCHAR(32) ;
declare powerQuan DOUBLE ; declare heatQuan DOUBLE ; declare netQuan DOUBLE ;
declare beltQuan DOUBLE ; declare beltAdjustQuan DOUBLE ; declare powerExpQuan
DOUBLE ; declare heatExpQuan DOUBLE ; declare otherExpQuan DOUBLE ; declare
scheduleQuan DOUBLE ; declare remark VARCHAR(512); declare status VARCHAR(16) ;
declare operateDate TIMESTAMP ; declare operator VARCHAR(50) ; declare
expDateChar VARCHAR(32) ; declare operateDateChar VARCHAR(32) ; declare xml_id
BIGINT;
SET
( expDate,
plantCode,
powerQuan,
heatQuan,
netQuan,
beltQuan,
beltAdjustQuan,
powerExpQuan,
heatExpQuan,
otherExpQuan,
scheduleQuan,
remark,
status,
operateDate,
operator ) = ( new.expDate,
new.plantCode,
new.powerQuan,
new.heatQuan,
new.netQuan,
new.beltQuan,
new.beltAdjustQuan,
new.powerExpQuan,
new.heatExpQuan,
new.otherExpQuan,
new.scheduleQuan,
new.remark,
new.status,
new.operateDate,
new.operator );
if ( expDate IS null ) then
SET
expDateChar = '' ; else
SET
expDateChar = char(date(expDate)) ;
end if ; if ( plantCode IS null ) then
SET
plantCode = '' ; end if ; if ( remark IS null ) then
SET
remark = '' ; end if ; if ( status IS null ) then
SET
status = '' ; end if ; if ( operateDate IS null ) then
SET
operateDateChar = '' ; else
SET
operateDateChar = char(date(operateDate))||' '||char(time(operateDate));
end if ; if ( operator IS null ) then
SET
operator = '' ; end if ; if NOT exists(
SELECT
xml_id
FROM
fuel.jt_hdgj
WHERE
tablename = 'coaldayexpend1' AND
hdgj_id = char(new.id)) then INSERT
INTO platform.DATA_COALDAYEXPEND1(timemark,
itemid,
datadetail)
VALUES
(char(current date) || ' '||char( current time ),
plantCode,
'<CoalDayExpendLiang> <expDate>'||expDateChar||'</expDate>
<plantCode>'||plantCode||'</plantCode>
<powerQuan>'||fuel.doutochar(powerQuan)||'</powerQuan>
<heatQuan>'||fuel.doutochar(heatQuan)||'</heatQuan>
<netQuan>'||fuel.doutochar(netQuan)||'</netQuan>
<beltQuan>'||fuel.doutochar(beltQuan)||'</beltQuan>
<beltAdjustQuan>'||fuel.doutochar(beltAdjustQuan)||'</beltAdjustQuan>
<powerExpQuan>'||fuel.doutochar(powerExpQuan)||'</powerExpQuan>
<heatExpQuan>'||fuel.doutochar(heatExpQuan)||'</heatExpQuan>
<otherExpQuan>'||fuel.doutochar(otherExpQuan)||'</otherExpQuan>
<scheduleQuan>'||fuel.doutochar(scheduleQuan)||'</scheduleQuan>
<status>'||status||'</status> <remark>'||remark||'</remark>
<operateDate>'||operateDateChar||'</operateDate>
<operator>'||operator||'</operator> </CoalDayExpendLiang> ');
SET
(xml_id) = (
SELECT
identity_val_local()
FROM
sysibm.sysdummy1) ;
INSERT
INTO fuel.jt_hdgj(tablename,
xml_id,
hdgj_id)
VALUES
('coaldayexpend1',
xml_id,
to_char(new.id)); end if; if(exists(
SELECT
*
FROM
FUEL.PICOALPROCESSSTATUS
WHERE
TABLENAME='COALDAYEXPEND1' AND
PKID= new.id )) then
UPDATE
FUEL.PICOALPROCESSSTATUS
SET
LAST_UPDATE_DATE=new.LAST_UPDATE_DATE ,
PROCESSTIME=new.LAST_UPDATE_DATE
WHERE
TABLENAME='COALDAYEXPEND1' AND
PKID= new.id ; else
INSERT
INTO FUEL.PICOALPROCESSSTATUS (TABLENAME,
PKID,
PROCESS,
LAST_UPDATE_DATE,
PROCESSTIME)
VALUES
('COALDAYEXPEND1',
new.id,
'已处理',
new.LAST_UPDATE_DATE,
new.LAST_UPDATE_DATE); end if; END

触发器SQL的更多相关文章

  1. Oracle生成多表触发器sql

    --将所有HY开头的表都生成一个更新触发器的脚本('/'是为了连续创建多个触发器而不报错)select 'CREATE OR REPLACE TRIGGER '||table_name||' BEFO ...

  2. SQL Server触发器

    一﹕ 触发器是一种特殊的存储过程﹐它不能被显式地调用﹐而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活.所以触发器可以用来实现对表实施复杂的完整性约`束. 二﹕ SQL Server为每个触发 ...

  3. SQL Server DDL触发器运用

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 基础知识(Rudimentary Knowledge) DDL运用场景(DDL Scene) ...

  4. SQL Server 触发器创建、删除、修改、查看示例

    一﹕ 触发器是一种特殊的存储过程﹐它不能被显式地调用﹐而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活.所以触发器可以用来实现对表实施复杂的完整性约`束. 二﹕ SQL Server为每个触发 ...

  5. oracle PL/SQL(procedure language/SQL)程序设计之触发器(trigger)

    创建触发器 触发器类似于过程和函数,都拥有声明.执行和异常处理过程的带名PL/SQL块.与包类似,触发器必须存储在数据库中.前面已经讲过,过程是显式地通过过程调用执行的,同时过程调用可以传递参数.与之 ...

  6. SQL Server 数据库DML触发器 【一】

    今天学习SQL Server数据库中DML触发器(DDL触发器以后有时间继续学习). 当删除一条创建有触发器的表中的内容时,触发器执行SQL语句. 1.首相先创建一张表,表名称是 [Test] , 内 ...

  7. SQL Server 存储过程、触发器、游标

    存储过程 1.存储过程是事先编好的.存储在数据库中的程序,这些程序用来完成对数据库的指定操作. 2.系统存储过程: SQL Server本身提供了一些存储过程,用于管理有关数据库和用户的信息. 用户存 ...

  8. SQL之trigger(触发器)

    先来看一小段程序 有如下三张表: 帐户(编号,姓名,余额,建立日期,储蓄所编号) 储蓄所(编号,名称,地址,人数,所属城市) 借贷(帐户,借贷类型,金额,日期) create trigger tri_ ...

  9. SQL入门(3):定义约束/断言assertion/触发器trigger

    本文介绍数据库的完整性 完整性控制程序: 指定规则,检查规则 (规则就是约束条件) 动态约束 intergrity constraint::=(O,P,A,R) O : 数据集合, 约束的对象 ?: ...

随机推荐

  1. Hadoop+Hbase分布式集群架构“完全篇”

    本文收录在Linux运维企业架构实战系列 前言:本篇博客是博主踩过无数坑,反复查阅资料,一步步搭建,操作完成后整理的个人心得,分享给大家~~~ 1.认识Hadoop和Hbase 1.1 hadoop简 ...

  2. 从零开始搭建Prometheus自动监控报警系统

    从零搭建Prometheus监控报警系统 什么是Prometheus? Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB).Prometheus使用Go语言开 ...

  3. HTTP Get与Post的本质区别

    作者:Larry链接:https://zhuanlan.zhihu.com/p/22536382来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. GET和POST是HTT ...

  4. iview起步

    ivew是一套基于vue的高质量的ui组件库.使用它我们可以非常简单的得到非常美观的页面和非常棒的用户体验. 1. 获取源码 前往github下载源码,下载地址:https://github.com/ ...

  5. vs2017和vs2019专业版和企业版

    步骤:打开vs2017,依次点击--->帮助----->注册产品 专业版: Professional: KBJFW-NXHK6-W4WJM-CRMQB-G3CDH 企业版: Enterpr ...

  6. .NET redis cluster

    一.下载Windows版本Redis 下载链接:https://github.com/MSOpenTech/redis/releases(根据系统选择对应版本) 二.修改默认的配置文件 如上图两个配置 ...

  7. Springboot2注解使用Mybatis动态SQL

    1.简单SQL使用 //从***数据表获取统计数据 @Select("select count(*) from issues where issue_type = #{type}" ...

  8. ubuntu server 16.04 开启root密码登录

    0x00 ubuntu server 16.04 开启root密码登录 由于众多VPS默认使用证书验证登录,虽然安全但使用十分不便,所以特提供开启root用户并使用密码登录方法. 0x01 为root ...

  9. fullpage 全屏插件

     fullpage 全屏插件 全屏滚动效果,原生js也很好实现,主要是用 mousewheel 鼠标滚轮滚动事件, 来判断上滚动还是下滚动,之后设置每次滚动的高度为屏幕的高度即可.但是,虽然效果简单, ...

  10. vscode指定扩展安装位置

    默认情况下,(Windows)vscode的安装路径为C:\Users\用户名\.vscode\extensions. 如果想要自定义扩展的安装路径,无法直接在vscode中修改.但是,在启动vsco ...